微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Asciidoctor 无法解析格式化文本:“ <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 不支持任意直通内容。虽然 PDF 转换器的 basebackend 是 html,但它只能识别可映射到 PDF 的内联 HTML 元素的有限子集(例如,a、strong、em、code、.)。因此,如果您的内容包含直通块或内联,您很可能必须使用条件预处理器来跳过它们(并进行其他安排)。

虽然上面提到了 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 后端识别的文档同步。

test.adoc rendered

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

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

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

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。