菜单

EPUB 生成

相关源文件

目的与范围

本文档描述了 System Design Primer 存储库中使用的 EPUB 生成系统。该系统将存储库的 Markdown 内容转换为 EPUB 格式,使读者能够在电子阅读器和其他 EPUB 兼容设备上访问这些材料。本文档涵盖了生成脚本的功能、工作流程、依赖项和用法。

有关贡献可能包含在生成的 EPUB 中的翻译的信息,请参阅翻译流程

概述

EPUB 生成系统使用 shell 脚本(generate-epub.sh)和 Pandoc 文档转换器将 Markdown 内容转换为格式正确的 EPUB 文件。该系统为多种语言生成 EPUB,并且可以包含解决方案内容以及主存储库文档。

系统组件

来源:generate-epub.sh

依赖项

EPUB 生成系统有一个外部依赖项

依赖项目的
Pandoc将 Markdown 转换为 EPUB 的文档格式转换工具

脚本在执行前会自动检查此依赖项是否存在。

来源:generate-epub.sh38-46

生成工作流

EPUB 生成过程遵循以下步骤

  1. 验证所需的依赖项是否已安装
  2. 生成包含解决方案内容的英文 EPUB
  3. 生成翻译的 EPUB(日语、简体中文、繁体中文)

EPUB 内容组装过程

来源:generate-epub.sh14-28 generate-epub.sh30-35

实现细节

该脚本包含多个函数,用于处理生成过程的不同方面。

内容聚合

对于包含解决方案的英文 EPUB,脚本会创建一个临时文件并拼接以下内容

  1. 来自存储库根目录的主 README.md
  2. 所有 README.md 文件(来自 solutions/system_design/ 的子目录,不包括模板目录)

这将创建一个包含主要内容和所有系统设计解决方案的综合性 EPUB。

来源:generate-epub.sh14-28

文档转换

Markdown 到 EPUB 的实际转换由 Pandoc 处理,其调用参数如下

  • --metadata-file=epub-metadata.yaml:引用包含 EPUB 元数据的 YAML 文件
  • --metadata=lang:$language:设置 EPUB 的语言
  • --from=markdown:指定输入格式
  • -o $output_filename:指定输出文件名

来源:generate-epub.sh3-12

语言处理

该系统为多种语言生成 EPUB

文件名语言代码源文件
README.epubenREADME.md + 解决方案 README 文件
README-ja.epubjaREADME-ja.md
README-zh-Hans.epubzh-HansREADME-zh-Hans.md
README-zh-TW.epubzh-TWREADME-zh-TW.md

来源:generate-epub.sh50-54

脚本架构

来源:generate-epub.sh

用途

要生成所有支持的 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 生成脚本与存储库中的以下文件交互

来源:generate-epub.sh

添加新语言

当新的语言翻译添加到存储库时,需要更新 EPUB 生成脚本以包含它。这需要向 generate 函数添加新的调用,并提供相应的文件名和语言代码。

例如,要添加西班牙语翻译,您可以在脚本末尾添加以下行

来源:generate-epub.sh50-54 CONTRIBUTING.md44-75