请帮助乌克兰!
赞助商
Pandoc   一个通用文档转换器

使用 Pandoc 创建电子书

从 1.6 版本开始,Pandoc 可以输出 EPUB 电子书格式。EPUB 电子书可以在 iPad、Nook 和其他电子书阅读器(包括许多智能手机)上查看。(它们也可以使用仅支持 GUI 的 KindlePreviewer 在 Windows 和 Mac OSX 上转换为 Kindle 电子书。KindleGen – 提供命令行界面并支持 LinuxMac OSXWindows – 已被弃用,但其二进制文件仍可在互联网上找到。)

这意味着现在创建电子书变得非常容易!我们来试试看。

一个简单的例子

使用文本编辑器创建一个名为 mybook.txt 的文件,内容如下:

% My Book
% Sam Smith

This is my book!

# Chapter One

Chapter one is over.

# Chapter Two

Chapter two has just begun.

要将其制作成电子书,只需一个命令:

pandoc mybook.txt -o mybook.epub

您可以将 mybook.epub 上传到您的电子书阅读器并试用。

请注意,如果您的 Markdown 文件包含本地图片链接,例如:

![Juliet](images/sun.jpg)

Pandoc 会自动将图片包含在生成的 EPUB 文件中。

一本真实的电子书

为了看看真实书籍的效果,我们来转换 Scott Chacon 的书籍 Pro Git,这本书是他使用 Pandoc 的 Markdown 变体编写的,并以 知识共享 许可发布。(如果您使用这本书,请考虑 购买一份 以支持他出色的工作。)

您可以在其 GitHub 站点 上找到该书的 Markdown 源文件。我们来获取整个仓库的副本:1

git clone https://github.com/progit/progit.git

这个命令将在您的机器上创建一个名为 progit 的工作目录。该书英文版的实际 Markdown 源文件位于 en 子目录中,所以首先切换到该目录:

cd progit/en

如您所见,每个章节都是其自身目录中的一个文本文件。Chacon 对这些文件进行了一些后处理,例如插入图片。这是一个图 1-1 的占位符,例如:

Insert 18333fig0101.png
Figure 1-1. Local version control diagram.

实际的图片文件名为 18333fig0101-tn.png,并位于仓库的 figures 子目录中,您可以进行验证。

为了演示目的,我们想要纯 Markdown 文件,所以让我们将这个占位符更改为 Markdown 图片链接。Pandoc 会将包含单个图片的段落视为带有标题的图,这正是我们想要的:

![Figure 1-1. Local version control diagram.](../figures/18333fig0101-tn.png)

我们可以使用 Perl 一行命令在所有文件中进行此更改:

perl -i -0pe \
's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' \
*/*.markdown

这将就地修改文件。(我们不必担心备份它们;如果我们弄乱了,可以使用 git reset --hard 恢复原始文件。)

好的!现在我们几乎准备好制作电子书了。我们有了章节,每个章节都在自己的文件中,但我们仍然需要一个标题。创建一个名为 title.txt 的文件,其中包含一个 Pandoc YAML 元数据块:

---
title: Pro Git
author: Scott Chacon
rights:  Creative Commons Non-Commercial Share Alike 3.0
language: en-US
...

有关这些字段的更多信息,请参阅用户指南

现在运行 Pandoc 来制作电子书,使用我们的标题页和修改后的章节文件作为源:

pandoc -o progit.epub title.txt \
  01-introduction/01-chapter1.markdown \
  02-git-basics/01-chapter2.markdown \
  03-git-branching/01-chapter3.markdown \
  04-git-server/01-chapter4.markdown \
  05-distributed-git/01-chapter5.markdown \
  06-git-tools/01-chapter6.markdown \
  07-customizing-git/01-chapter7.markdown \
  08-git-and-other-scms/01-chapter8.markdown \
  09-git-internals/01-chapter9.markdown

就这样!电子书 progit.epub 已准备好上传到您的阅读器。

更改格式

您可以使用 --css 选项为书籍指定 CSS 文件。默认 CSS 是最简单的,可以在 GitHub 上 或在您数据目录中的 epub.css 文件中找到(请参阅用户指南中的 --data-dir)。

如果需要,您甚至可以将字体嵌入到 EPUB 中;请参阅用户指南--epub-embed-font 部分的说明。

数学公式

Pandoc 有一个 EPUB3 写入器。它将 LaTeX 数学公式渲染成 MathML,EPUB3 阅读器应该支持(但遗憾的是很少有支持)。

当然,如果您想要 EPUB2 输出 (pandoc -t epub2) 或目标阅读器不支持 MathML,这帮助不大。那么您有两个选择:

  1. 使用 --webtex 选项,它将使用网络服务将 TeX 转换为图片。
  2. 使用 --gladtex 选项在本地机器上将数学公式转换为 SVG 图片。

GladTeX 和 WebTeX 都会将公式的 LaTeX 源作为图片的替代文本添加,从而提高盲人用户的可访问性。


  1. 如果您没有 git,您可以浏览到 GitHub 站点 并点击“Download Source”以 zip 或 tar 压缩包的形式获取相同的文件。↩︎