Asciidoctor 无法解析格式化文本:“ <a data-type

Asciidoctor fails to parse formatted text: "​<a data-type

我是 运行 asciidoctor,命令如下:

asciidoctor -r asciidoctor-pdf -b pdf master.asciidoc

并且无法解析以下文本:

pass:[<a data-type="xref" data-xrefstyle="ct" href="#m1">#m1</a>]::

出现以下错误:

failed to parse formatted text: ​<a data-type="xref" data-xrefstyle="ct" href="#m1">#m1</a>

我该如何解决?

带有后端 PDF 的 Asciidoctor 对直通语法的支持有限,因为 documentation states

Asciidoctor PDF does not support arbitrary passthrough content. While the basebackend for the PDF converter is html, it only recognizes a limited subset of inline HTML elements that can be mapped to PDF (e.g., a, strong, em, code, ). Therefore, if your content contains passthrough blocks or inlines, you most likely have to use a conditional preprocessor to skip them (and make other arrangements).

虽然上面提到了 a 标签,但一个小测试表明只支持基本语法。

使用下面的 adoc 文件...

= test pass

pass:[<em>#m1</em>]

pass:[<strong>#m1</strong>]

pass:[<code>#m1</code>]

pass:[<a href="#m1">#m1</a>]

pass:[<a href="#m1" data-type="xref" data-xrefstyle="ct">#m1</a>]

运行 它通过 asciidoctor pdf 后端产生与您在问题中已经提到的相同的错误。

$ asciidoctor -r asciidoctor-pdf -b pdf  test.adoc 
asciidoctor: ERROR: failed to parse formatted text: <a href="#m1" data-type="xref" data-xrefstyle="ct">#m1</a>

生成的 PDF 如下图所示。简单的 <a href="#m1">#m1</a> 行已正确转换。但是,一旦添加了更多属性,它就会失败。这与说明高级 html 语法不被 pdf 后端识别的文档同步。

要生成具有所需 passthrough 的 PDF,您可能需要使用普通 asciidoctor 将其转换并通过管道传输到 wkhtmltopdf.

asciidoctor -o - test.adoc | wkhtmltopdf -  test.pdf

结果使用如下所示的 html 外观和稍小的正文文本。