【问题标题】:Asciidoctor fails to parse formatted text: "​<a data-typeAsciidoctor 无法解析格式化文本:“​<a data-type
【发布时间】:2020-12-19 17:36:57
【问题描述】:

我正在使用以下命令运行 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>

我该如何解决?

【问题讨论】:

    标签: macros asciidoc asciidoctor asciidoctor-pdf


    【解决方案1】:

    带有后端 PDF 的 Asciidoctor 仅有限支持直通语法,如 documentation states

    Asciidoctor PDF 不支持任意直通内容。虽然 PDF 转换器的基本后端是 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 类似于以下屏幕截图。简单的&lt;a href="#m1"&gt;#m1&lt;/a&gt; 行已正确转换。但是,一旦添加了更多属性,它就会失败。这与说明 pdf 后端无法识别高级 html 语法的文档是同步的。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      相关资源
      最近更新 更多