尝试使用 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[超链接],指向 example.com 站点。

我不觉得这像 Markdown 的链接符号那样优雅,但它更灵活。例如,您可以在 AsciiDoc 链接中添加属性

这是一个 https://example.com[链接,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 更冗长,可能也不如 Markdown 直观,但它仍然只是纯文本,因此您可以在任何内容上进行创作,并且 Asciidoctor 使处理变得容易。下次您出于任何目的编写文档时,请考虑尝试 AsciiDoc。

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

7 条评论

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

最近,我第一次使用它来创建一个 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 代码来调整工作流程,又减少了 3 个小时。

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

Creative Commons License本作品采用知识共享署名 - 相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.