尝试使用 AsciiDoc 而不是 Markdown

下次写作时,使用 AsciiDoc 和 Asciidoctor 作为 Markdown 的替代方案。
7 位读者喜欢这篇文章。
Person using a laptop

我是基于 XML 的 Docbook 标记语言的忠实用户。对我而言,它是一个精确、明确和详细的系统,允许我在我的写作中拥有上下文和特定领域的元数据。最棒的是,它可以被转换(XML 用户在 XML 被转换为另一种格式时这样称呼它)成几乎任何格式,包括 HTML、EPUB、用于 PDF 的 FO、纯文本等等。然而,强大的功能也意味着大量的输入,有时 Docbook 感觉像是超出了需求。幸运的是,还有 AsciiDoc,一个用纯文本编写的系统,具有与 Markdown 相同的无标记感觉,但可以转换为 Docbook,以利用其精度和灵活性。

AsciiDoc 规则

像 Markdown 一样,AsciiDoc 的目标之一是您不必真正学习它。相反,它的目标是直观和自然。如果您曾经为提高可读性而在纯文本文档中添加了一些样式,那么您可能已经在不知不觉中编写了有效的 AsciiDoc 代码片段。例如,如果您习惯用空行分隔段落,那么您就已经编写了相当于 HTML <p> 或 Docbook <para> 标签的代码。这似乎显而易见,但实际上在学术界通常不使用空行分隔段落,因此即使是这个简单的约定在技术上也是标记。

这是最常用的语法。

文本样式

文本样式包括粗体、斜体和代码字体等基本样式。大多数表示法都相对直观,斜体可能除外。

*粗体*

_斜体_

*_粗体和斜体_*

`等宽或代码`

代码

代码用反引号标记,或通过显式声明代码块标记。

`等宽或代码`

[source,python]
----
print('a whole code block')
----

标题

标题用前导等号 (=) 标记

= 标题 1 (<h1>)

== 标题 2 (<h2>)

=== 标题 3 (<h3>)

==== 标题 4 (<h4>)

===== 标题 5 (<h5>)

====== 标题 6 (<h6>)

链接

超链接优先使用链接,然后是用于将链接“伪装”成文本的单词或短语。

这是一个 http://example.com[hyperlink],它指向 example.com 站点。

我觉得这不如 Markdown 的链接表示法那么优雅,但它的灵活性要高得多。例如,您可以在 AsciiDoc 链接中添加属性

这是一个 https://example.com[link,role=external,window=_blank],其中设置了 target="_blank" 属性。

还有更多

AsciiDoc 还具有内部链接功能,因此您可以从一个部分链接到另一个部分,文档标题的标准,自动生成目录,在另一个文档中包含其他文档的能力,以及更多功能。

但最重要的是,AsciiDoc 实际上是标准化的。并非所有人都知道,术语“Markdown”并非指一种轻量级标记语言。不同的组织和团体经常自定义和更改 Markdown 以供自己使用,因此当您使用 Markdown 时,您真的应该验证您打算使用哪种 markdown。您可能从一个使用 Markdown 的网站学到的许多约定不会延续到另一个使用 Markdown 的网站。Markdown 本质上没有标准,这导致了如此多的混乱,以至于 Commonmark.org 项目已经成立,试图制定一个标准化的定义。

AsciiDoc 从一开始就设计了标准定义,因此声称可以解析 AsciiDoc 的工具或网站实际上确实解析了所有有效的 AsciiDoc,因为只有一个有效的 AsciiDoc。

AsciiDoc 可以转换为任何格式

使用像 AsciiDoc 这样的轻量级标记语言进行写作的目的是确保在解析文本时的可预测性和一致性。您希望有人编写脚本,或运行其他人编写的应用程序,以便能够将您的纯文本转换为最适合他们的任何格式。有时是 HTML(顺便说一句,Markdown 的原生输出格式,以及当其自身语法中缺少某些内容时的后备语言。)有时是 EPUB,或用于打印的 PDF,Docbook,LibreOffice 文档,或任何数量的可能的输出格式。

有几种工具可以帮助您将 AsciiDoc 转换为另一种格式。一个流行的命令是 Asciidoctor,您可以使用软件包管理器安装它。例如,在 Fedora、CentOS 或 RHEL 上

$ sudo dnf install asciidoctor

在基于 Debian 的系统上

$ sudo apt install asciidoctor

或者,您可以在任何安装了 Ruby 的操作系统上安装它

$ gem install asciidoctor

这是一个 AsciiDoc 文档的简单示例,您可以使用任何 文本编辑器 甚至文字处理器(如 LibreOffice)创建它,只要您将文件另存为纯文本即可。大多数应用程序期望纯文本文档使用 .txt 扩展名,虽然习惯上使用 .adoc 扩展名用于 AsciiDoc,但这不是必需的。Asciidoctor 不需要任何特殊的扩展名。

= This is my example document

It's not written in _Markdown_, nor _reStructured Text_.
This is *AsciiDoc*.

It can be transformed into nearly any format using the tool `Asciidoctor` and other similar parsers.
Try it for yourself!

要将 AsciiDoc 文档转换为 HTML,请运行 asciidoctor

$ asciidoctor example.adoc

文件 example.adoc 默认转换为 HTML5,但您可以使用不同的后端来访问更多格式。

从 AsciiDoc 到 XML

我最喜欢的是 Docbook 后端,因为它将我的 AsciiDoc 转换为 Docbook XML,使我能够使用我现有的 Docbook 工具链(自定义 Makefiles、Apache FOP、xsltprocxmlto 等)来完成我的工作

$ asciidoctor --backend docbook5 example.adoc

这会输出 Docbook XML。最后两个内置后端是 xhtml5manpage

从 AsciiDoc 到 EPUB

如果您想将您的作品变成电子书,您可以安装 EPUB3 后端

$ gem install asciidoctor-epub3

将您的 AsciiDoc 转换为 EPUB

$ asciidoctor-epub3 example.adoc

从 AsciiDoc 到 PDF

您也可以将 AsciiDoc 直接转换为 PDF

$ gem install asciidoctor-pdf
$ asciidoctor-pdf example.adoc
Asciidoctor-pdf output

(Seth Kenlon, CC BY-SA 4.0)

谁应该使用 AsciiDoc

AsciiDoc 非常适合技术作家和对文本的组织和解析方式有精确要求的作家。它是一种清晰且严格定义的标记格式,消除了竞争性 Markdown 格式的混乱,并且可以转换为所有主要格式。诚然,AsciiDoc 比 Markdown 更冗长,可能也不那么直观,但它仍然只是纯文本,因此您可以在任何设备上创作,并且 Asciidoctor 使处理变得容易。下次您为任何目的编写文档时,请考虑尝试 AsciiDoc。

接下来阅读什么
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 爱好者、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,经常同时进行。

7 条评论

普通人需要一个类似 Obsidian 且支持 asciidoc 的编辑器。有什么建议吗?

最近,我第一次使用它来创建一个 PDF,这是一个用于新开发人员面试的作业。由于我使用了带有语义版本控制和一些可替换变量的 CI/CD 管道,现在组织中的每个人都使用同一份文档。我对此感到高兴,但仍然需要深入研究主题的样式设置。

我非常老派,所以我很欣赏 LaTex 的巨大价值,它可以通过更改文件顶部的单行代码来更改文档格式,以完全重现不同期刊、论文风格和各种信函格式的样式。此功能是 AsciiDoc 的一部分吗?

我已经使用(并喜欢)Asciidoc + Asciidoctor 几年了。我喜欢的另一个要素是能够创建和使用自定义 CSS 样式表,以便在文档需要时应用特定样式(并且老实说,Asciidoc 处理文档标题信息的方式总体而言)。

这可能看起来是一件小事,但作为专业技术写作/文档领域之外的人,它使我的工作生活更轻松,我很感激这一点。

很棒的文章和建议,Seth!

是否有一种简单的方法可以将 asciidoc 转换为 LibreOffice (odt) 格式,类似于上面的其他示例?

每周和每月的报告是必要的恶。2012 年,我和我的助手每周花费 14 个小时准备报告,首先是六个章节,每个章节由不同的作者在 MS Word 中编写,表格从 Excel 工作簿和 SQL 数据库生成,进度图,现场照片和其他“标准展品”。主要的瓶颈是将所有 MS Word 文本整理成一致的格式并构建表格。

切换到 Asciidoc 和一点 Python 后,工作流程立即减少了 8 个小时。几个月后,编写了更多的 python 代码来调整工作流程,又减少了三个小时。

新的 Asciidoc 工作流程生成的报告质量很高,并直接转换为 PDF 和 HTML。此外,还可以准备两个版本的报告:内部使用和客户使用。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.