使用 AsciiDoc 标记语言创建电子书

还没有读者喜欢这篇文章。
paper planes

Opensource.com

对于手册和指南,Wiki 是组织内容的绝佳方式。然而,对于较长的文章或书籍,它们通常效果不佳,因为单个内容分散在多个页面上,读者必须点击浏览。此外,当您想在无法连接互联网的地方(例如,在飞机上阅读)阅读在线内容时,需要另一种内容交付模式。

最近,我很高兴看到 Opensource.com 提供了一种全面而巧妙的 以开源方式创建电子书 的方法。但是,我不太喜欢 Wysiwig 编辑器,更喜欢像 LaTeX、Markdown、AsciiDoc 甚至 Wiki-Markup 这样的标记语言。因此,在这里我为您提供另一种选择:准备用于编辑 AsciiDoc 文档的电子书内容。[您也可以在旅途中,在手机或平板电脑上的电子邮件编辑器中执行此操作。]


 

AsciiDoc 是一种标记语言,已经存在相当长一段时间了。内容以纯文本形式创建,并且在其源形式中可读。例如

 = 第一章

敏捷的棕色狐狸跳过源代码 `code`

image::myCat.png[一只萌猫]

 

* 第一个列表项

* 第二个列表项

* 第三个列表项

 

= 第二章

Lorem ipsum...

include::example.adoc[]

注意: 这是一个简单的例子;AsciiDoc 格式可以更强大。

处理 AsciiDoc

一个用 Python 编写的工具链可用于将文档转换为目标格式,如 .html.pdf 和 ePub。要转换用 AsciiDoc 编写的文档,请运行如下命令

asciidoc -d book  <input.adoc>

并在浏览器中加载生成的 .html 文档。

使用 Asciidoctor 代替 AsciiDoc 进行处理

Asciidoctor 是 AsciiDoc 命令的直接替代品。 它们之间存在一些细微差异,但通常不会产生影响。 Asciidoctor 是用 Ruby 编写的,速度明显更快。 通过  gem install asciidoctor 获取它,然后像上面类似地使用它:

asciidoctor -d book  <input.adoc>

在浏览器中使用自动加载扩展程序进行实时预览

手动在文本编辑器、命令行和浏览器之间切换以获取预览仍然有点麻烦,因此 Dan Allen 描述了一种 方法,可以在文件更改时自动触发输出文档的重新创建。 最重要的是,浏览器插件可以检测到更改后的 .html 文件并自动重新加载它。 如果您将浏览器窗口和编辑器并排放置,那么您基本上就拥有了 wysiwyg 编辑。

将文档转换为 ePub

现在文档已完成,我们可以将其渲染为 ePub 格式。为此,我们将使用 AsciiDoc 及其工具链,特别是 a2x 命令。

a2x -fepub -d book <input.adoc>

首先,这会在内部将文档转换为 docbook,然后从 docbook 转换为最终的 ePub 格式。 此过程对用户来说几乎是透明的,除非原始文档违反了 ePub 的某些规则,并且 a2x 返回了一条神秘的错误消息。 该文档有一个关于如何使用 a2x 创建 AsciiDoc 电子书的 扩展指南

User profile image.
Heiko 是一位长期的开源贡献者。他目前在 Red Hat 工作,负责服务器和软件系统的监控和管理。Heiko 拥有卡尔斯鲁厄大学计算机科学硕士学位,并撰写了两本关于 JBoss AS 和 Enterprise Java Beans 的书籍。

3 条评论

感谢这篇文章。我已经有一段时间没有使用 AsciiDoc 了,这篇文章很好地提醒了我它可以做什么。

一个问题:使用 AsciiDoc 生成的书籍在使用像 epubcheck 这样的工具进行验证时效果如何?

Scott,
我没有提到 epubcheck 是为了文章的简洁性。 当我上次转换一篇较长的文本时,a2x 工具本身抱怨了一些问题,结果证明这些问题是由于从 Word 处理器复制粘贴文本时偷偷溜进来的印刷体“”。 解决之后,一切都很顺利,epubcheck 然后抱怨它认为是我文本中未注册的 uri 方案 (irc:// ),但仅此而已。

感谢提供信息。很高兴知道用 AsciiDoc 生成的 EPUB 可以通过验证。我可能不得不再次关注 AsciiDoc。我想我有一个电子书项目可能非常适合它...

© . All rights reserved.