以某种标准衡量,创建一个 EPUB(电子出版物)格式的电子书是件很简单的事。理论上,你只需要一个文本编辑器、几个命令行工具,以及XHTML、CSS的实用知识和对格式结构的了解。但真要制作一本排版精美且内容吸引人的电子书,就没那么简单了。幸运的是,市面上有专门为此设计的应用程序可以简化整个过程,Sigil 就是这样一款功能全面的EPUB编辑器。
关于 Sigil
Sigil 可以看作是创建和处理 EPUB 出版物的一站式工具,它同时支持 EPUB 2 和 EPUB 3 标准。虽然新书通常不会再选用早在2011年就被 EPUB 3 取代的 EPUB 2 标准,但在处理旧出版物或为可能没有最新阅读器的用户制作电子书时,对 EPUB 2 的支持仍然很有用。
Sigil 是一款跨平台的桌面应用,基于 Qt 6 框架开发,主要使用 C++ 编写,也包含相当数量的 C 和 Python 代码。这个遵循 GPLv3 协议的项目始于2009年,最初是创始人 Strahinja Marković 计算机科学课程作业的一部分。
在发展历程中,Sigil 经历过几段沉寂期。正是其中一段时期的停滞,促使 Kovid Goyal 在2013年为 Calibre 项目创建了一个独立的电子书编辑器。不过,Sigil 的开发在2014年得以恢复,当时 Kevin Hendricks 和 Doug Massay 接管了项目维护,并将其托管在 GitHub 上。自此之后,两人一直积极地维护 Sigil。项目目前非常活跃,仅2025年就发布了八个版本。由于应用程序本身已经相当成熟,因此大部分工作都集中在新功能微调、错误修复以及跟上依赖项更新上。
文档
有趣的是,Sigil 的用户指南本身就是一个 EPUB 文件。同时,该项目也提供了一个在线可读版本,内容与 EPUB 完全一致,由专门用于在浏览器中显示 EPUB 内容的 Readium 项目驱动。
对于没有太多 EPUB 制作经验的人来说,从阅读项目的技术文档开始总是一个好主意。这本指南不仅是 Sigil 功能的参考资料,还包含了一些简短的教程。例如,它提供了非常有用的指导,教你如何将 LibreOffice(ODF)或 Microsoft Word(DOCX)格式的内容转换为 Sigil 可用的 XHTML,因为 Sigil 本身并不直接导入这些格式。
建议先从教程入手,然后再去大致浏览“功能”部分,后者可以作为 Sigil 界面、工具和功能的良好速查手册。作为一本 EPUB 格式的指南,它本身也是一个测试 Sigil 功能的绝佳文档,展示了 EPUB 的结构、格式良好的 CSS 和 XHTML 以及元数据的范例。
使用 Sigil
初看 Sigil,它就像一个带有代码语法高亮的简单文本编辑器。的确如此,但它的功能远不止于此。默认布局包括顶部的菜单栏和多个工具栏。下方,左侧是“书籍浏览器”窗格,中间是文本编辑器,右侧是预览窗格,用于模拟电子书最终的排版效果。当然,实际效果仍取决于读者设备的渲染方式。

用户可以隐藏或移动各种工具栏和预览窗格,唯独中间的文本编辑器窗格是固定的。窗格还可以从主窗口中分离出来,变成独立的浮动窗口。
需要注意的是,在内容准备好转换成 EPUB 之前,Sigil 并非撰写内容或进行协作的最佳选择。它的设计初衷是将已有的内容组装成书,或对现成的 EPUB 文件进行修饰。其内置编辑器并不是为了大量创作或文本编辑而设计的,用起来并不算特别顺手。它更适合进行轻量级的编辑和为文本添加标记。
但这并不意味着 Sigil 在文稿处理上毫无帮助。它内置了一个不错的拼写检查器,并支持通过 PCRE2 库使用 Perl 兼容正则表达式进行查找和替换。还有一个“已保存搜索”工具,方便用户创建并保存常用的查找替换操作。例如,Sigil 附带了几个示例搜索,用于删除空段落、尾随空格,以及将长破折号(“—”)等字符转换为 XHTML 实体(—)。
该项目还提供了一个名为 PageEdit 的独立 XHTML 编辑器,允许用户在所见即所得(WYSIWYG)的界面中创建和编辑内容。在将书籍章节等内容导入 Sigil 进行最终组装之前,PageEdit 可能更适合进行编写和初步排版。当然,你也可以在 Sigil 中配置使用自己喜欢的外部编辑器,比如 Emacs、Vim 等。对于需要一个简单所见即所得 HTML 编辑器的用户来说,PageEdit 本身也值得一试。

Sigil 真正擅长的是将内容组装成 EPUB,优化其可用性,并检查结果以确保出版物符合 EPUB 标准。例如,用其他工具生成章节的 XHTML 文件并不太难,但创建目录或索引就是另一回事了。幸运的是,Sigil 提供了易用的工具来处理这些任务。
Sigil 可以根据书中的标题自动生成目录。每个标题标签(<h1> 到 <h4>)都会成为一个目录条目。如果这不符合你的需求——比如包含 <h3> 和 <h4> 标题会导致目录过于冗长——用户可以选择只包含特定级别的标题。当然,目录也可以手动编辑,添加或删除条目。

创建索引则更偏向手动过程,但在 Sigil 的帮助下也会容易很多。用户可以选中任何文本(如人名、专业术语)并将其标记为索引项。或者,也可以通过“索引编辑器”工具,将某个单词或字符串的所有实例一次性添加到索引中(对于出现频率不高的词汇更适用)。一旦所有文本被标记完毕,Sigil 就可以自动生成指向每个条目的索引页面。这个过程可以根据需要重复进行。
插件与自动化
Sigil 支持使用 Python 编写的插件来扩展功能。项目提供了 API 指南(同样有 EPUB 版本),其中包含了插件的预期结构和示例。
不过,你可能不需要自己动手写插件。目前已经有很多现成的插件,提供了诸如导入 DOCX 文件、使用 W3C 的 EPUBCheck 工具验证 EPUB、增强电子书可访问性等功能。特别是 EPUBCheck 插件,建议在安装 Sigil 后立即添加,以确保生成的 EPUB 文件符合规范。
如果你需要处理大量出版物,很可能会遇到一些重复性操作。Sigil 为此提供了一个自动化工具,允许用户创建由内置工具操作(例如删除未使用的 CSS 样式)和插件组合而成的自动化任务流程。
我个人最欣赏的功能之一是“检查点”。检查点就是 EPUB 在某一时刻的快照。你可以创建一个检查点,然后继续工作,之后再将当前状态与之前的检查点进行对比,精确查看发生了哪些变化。Sigil 会显示文件的新增、删除和修改情况,甚至允许你查看文件内容的差异对比。最重要的是,如果需要,你可以从之前的检查点进行恢复,这对于误删文件或需要撤销一系列更改的情况非常有用。不过,这种恢复是“全有或全无”的,不支持只恢复某个特定文件的编辑。因此,养成经常创建检查点并在进行恢复操作前将当前工作另存为新文件的好习惯是明智的。
近期发布的 2.7.0 版本改进了元数据编辑器的导航、更新了用户自定义自动化操作的菜单,并修复了一系列错误。Sigil 项目为 Linux 用户提供了 AppImage 格式的构建版本,同时也指引用户前往 Flathub 获取 Flatpak 版本(但该项目尚未正式认领该 Flatpak,因此显示为“未经验证”)。当然,大多数主流 Linux 发行版的仓库中也提供了 Sigil 的软件包。
Sigil 的支持社区主要在 MobileRead 论坛上,项目开发者在那里相当活跃。用户也可以通过 GitHub Issues 来报告错误或提出其他问题。
总的来说,我发现 Sigil 上手容易,尽管某些操作(如在目录编辑器中无法批量选择多个条目进行修改)略显繁琐。但撇开这些小细节,它确实是制作和处理 EPUB 的理想工具。
一些补充工具与工作流
在讨论 Sigil 的评论区,用户们也提到了其他有用的工具。Pandoc 可以帮助作者将其支持的多种格式(包括 LaTeX)转换为 EPUB,作为后续精细编辑的良好起点。LibreOffice Writer 自 6.0 版本起也支持导出为 EPUB 2,对于习惯使用字处理软件的用户来说,这可能是一个为 Sigil 准备源内容的便捷方式。
无论是独立作者还是小型出版商,若你正在寻找一个强大、免费且开源的电子书编辑解决方案,Sigil 绝对值得深入探索。它的出现,让原本复杂的 EPUB 格式处理,变得对开发者与内容创作者更加友好。如果你对这类开源工具的使用和开发感兴趣,欢迎来 云栈社区 交流分享你的经验。