本文档描述了 System Design Primer 存储库中使用的 EPUB 生成系统。该系统将存储库的 Markdown 内容转换为 EPUB 格式,使读者能够在电子阅读器和其他 EPUB 兼容设备上访问这些材料。本文档涵盖了生成脚本的功能、工作流程、依赖项和用法。
有关贡献可能包含在生成的 EPUB 中的翻译的信息,请参阅翻译流程。
EPUB 生成系统使用 shell 脚本(generate-epub.sh)和 Pandoc 文档转换器将 Markdown 内容转换为格式正确的 EPUB 文件。该系统为多种语言生成 EPUB,并且可以包含解决方案内容以及主存储库文档。
EPUB 生成系统有一个外部依赖项
| 依赖项 | 目的 |
|---|---|
| Pandoc | 将 Markdown 转换为 EPUB 的文档格式转换工具 |
脚本在执行前会自动检查此依赖项是否存在。
EPUB 生成过程遵循以下步骤
来源:generate-epub.sh14-28 generate-epub.sh30-35
该脚本包含多个函数,用于处理生成过程的不同方面。
对于包含解决方案的英文 EPUB,脚本会创建一个临时文件并拼接以下内容
README.mdREADME.md 文件(来自 solutions/system_design/ 的子目录,不包括模板目录)这将创建一个包含主要内容和所有系统设计解决方案的综合性 EPUB。
Markdown 到 EPUB 的实际转换由 Pandoc 处理,其调用参数如下
--metadata-file=epub-metadata.yaml:引用包含 EPUB 元数据的 YAML 文件--metadata=lang:$language:设置 EPUB 的语言--from=markdown:指定输入格式-o $output_filename:指定输出文件名该系统为多种语言生成 EPUB
| 文件名 | 语言代码 | 源文件 |
|---|---|---|
| README.epub | en | README.md + 解决方案 README 文件 |
| README-ja.epub | ja | README-ja.md |
| README-zh-Hans.epub | zh-Hans | README-zh-Hans.md |
| README-zh-TW.epub | zh-TW | README-zh-TW.md |
要生成所有支持的 EPUB 文件,请从存储库根目录运行脚本
这将创建
README.epub - 英文版(带解决方案)README-ja.epub - 日语版README-zh-Hans.epub - 简体中文版README-zh-TW.epub - 繁体中文版生成成功将通过类似以下消息确认
Generating 'en' ...
Done! You can find the 'en' book at ./README.epub
来源:generate-epub.sh3-12 generate-epub.sh50-54
EPUB 生成脚本与存储库中的以下文件交互
当新的语言翻译添加到存储库时,需要更新 EPUB 生成脚本以包含它。这需要向 generate 函数添加新的调用,并提供相应的文件名和语言代码。
例如,要添加西班牙语翻译,您可以在脚本末尾添加以下行