Asciidoctor的默认输出格式是HTML(具体来说是HTML 5)。这意味着当你不带任何参数运行Asciidoctor时,它会生成HTML。本页将解释如何使用Asciidoctor将AsciiDoc转换为HTML。

后端和转换器

Asciidoctor的内置HTML转换器为`html`和`html5`后端注册。HTML转换器生成的是用CSS3样式化的HTML 5。它可能包括JavaScript以支持额外的集成,例如客户端语法高亮。

后端名称

html`, `html5

转换器类

Asciidoctor::Converter::Html5Converter

输出格式

HTML

输出文件扩展名

.html

Warning
内置HTML转换器生成的独立HTML文档从谷歌字体加载网络字体,这些字体随后被默认样式表引用。默认样式表使用网络字体,以确保文档在各个平台上呈现一致性。已经提出担忧谷歌字体不符合GDPR(通用数据保护条例)。如果这构成一个问题,你可以选择不使用谷歌字体。当这样做时,默认样式表将回退到使用通用字体族(例如,sans-serif),这些将通过你的浏览器映射到系统字体。其结果是文档的外观会有所不同,且因依赖系统字体而变得系统相关。

如果后端名称前缀为`x`(例如,xhtml),转换器将生成XHTML,即HTML的XML变体。

生成HTML

在这一部分,我们将创建一个样本文档,然后使用Asciidoctor内置的HTML转换器进行处理和转换。

创建并保存一个AsciiDoc文档

  1. 按照下面的步骤操作,请使用你自己的AsciiDoc文件,或者复制my-document.adoc中的内容到一个新的纯文本文件中。

    my-document.adoc
    Unresolved directive in index.adoc - include::example$my-document.adoc[tags=title;body]
  2. 请确保以 .adoc 文件扩展名保存文件。

将AsciiDoc文档转换为HTML

To convert my-document.adoc to HTML from the command line:

  1. 打开一个终端。

  2. 切换到包含[.path]_my-document.adoc_文件的目录

  3. 使用 asciidoctor 命令调用Asciidoctor处理器,后面跟上文档的名称。

    $ asciidoctor my-document.adoc

    请记住,Asciidoctor的默认转换器是html5,因此没有必要用`-b`命令来指定它。

  4. 你不会看到控制台打印出任何消息。输入 ls 可以查看目录中的文件,或在文件管理器中导航到该目录。你应该会看到一个新的文件名为 my-document.html

    $ ls
    my-document.adoc  my-document.html

    Asciidoctor根据输入文档的名称来推导输出文档的名称。

  5. 在你的网页浏览器中打开 my-document.html 文件。你的文档应该看起来像下面的图片。

    my document

    文件的文本、标题和链接由默认的Asciidoctor样式表设置样式,该样式表嵌入在HTML输出中。因此,你可以将[.path]_my-document.html_保存到任何计算机上,它将看起来相同。

  6. 如果您想在终端预览HTML,可以使用这个命令:

    $ asciidoctor my-document.adoc -o - | w3m - -T text/html

生成XHTML

后端名称

xhtml`, `xhtml5

转换器类

Asciidoctor::Converter::Html5Converter

输出格式

HTML的XML变体

输出文件扩展名

.html

使用xhtml5后端选项生成XHTML。
$ asciidoctor -b xhtml5 my-document.adoc

要在使用转换器模板时生成XHTML而不是HTML,请除了后端选项之外,还要将`htmlsyntax`属性设置为`xml`。

使用自定义模板生成XHTML

$ asciidoctor -T /path/to/templates -b slides -a htmlsyntax=xml my-document.adoc

黑盒解码:XHTML与HTML语法

XHTML输出是内置HTML5转换器的一种特殊模式。它通过在后端值前加上`x`来激活(例如,xhtml`或`xhtml5)。这个提示隐式地将`htmlsyntax`属性的值设置为`xml`,通常其值为`html`。

对于所有其他的转换器,htmlsyntax 属性并没有被显式设置。如果你想要一个用Slim或Haml编写的转换器模板输出XHTML而不是默认的HTML,你需要显式地将`htmlsyntax`属性设置为`xml`。Asciidoctor会通过将`:format`选项设置为`:html5`,将这一偏好传递给Slim或Haml模板引擎。