怎么把asciidoc转换成pdf?

mhe*_*rzl 3 asciidoc

我尝试将其转换mybook.adocmybook.pdfusing pandoc,并收到以下错误。

$ pandoc -s mybook.adoc -t asciidoc -o mybook.pdf
pandoc: cannot produce pdf output with asciidoc writer
Run Code Online (Sandbox Code Playgroud)

我还有其他工具可以代替或配合使用pandoc吗?如何将asciidoc转换为pdf?

小智 10

如果您使用的是 VS Code,请Ctrl + SHFT + P输入AsciiDoc: Export document as pdf

  • 我已将文档组织成多个文件。对我来说,VS Code 无法加载图像 - 由于某种原因,它会在完全不同的位置查找它们。 (2认同)

Rem*_*mis 6

先决条件:仅需要Ruby(1.9.3或更高版本)

为AsciiDoc- Asciidoctor PDF 安装本机PDF转换器:

gem install asciidoctor-pdf --pre
Run Code Online (Sandbox Code Playgroud)

运行

asciidoctor-pdf mybook.adoc
Run Code Online (Sandbox Code Playgroud)

您应该在同一目录中获得文件mybook.pdf。


mat*_*sev 6

如果您安装了 Docker,则可以使用AsciiDoctor Docker Image。然后您可以交互地或以批处理模式使用图像,如下所述:

先决条件

  1. 安装 Docker
  2. 安装 Docker 镜像:

    $ docker pull asciidoctor/docker-asciidoctor
    
    Run Code Online (Sandbox Code Playgroud)

通过执行以下命令创建 pdf:

$ cd [directory to where my book.adoc is located]
$ docker run --rm -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf mybook.adoc
Run Code Online (Sandbox Code Playgroud)

解释

  • docker run 启动一个 Docker 容器
  • --rm cleanup - 在命令执行后删除 Docker 容器
  • -v 将卷挂载到映像
  • $(pwd)获取当前目录的路径,例如[directory to where my book.adoc is located]上面的值
  • documents 正在运行的容器中已安装卷的名称
  • asciidoctor/docker-asciidoctor 用于创建 Docker 容器的 Docker 镜像的名称
  • asciidoctor-pdf 实际触发pdf生成的命令
  • mybook.adoc 要从中生成 pdf 的 AsciiDoc 源文件的名称

另请参阅docker run文档


mhe*_*rzl 3

我现在意识到从 asciidoc 到 pdf 的理想途径是首先将 asciidoc 转换为 docbook。这采用了 asciidoc 和 docbook->pdf 转换器的预期范围,每个转换器都在其单独的关注领域中使用。

此外,pandoc我并没有发现,当包含数学公式时,更容易用于dblatexdocbook->pdf 转换。因此我的转换管道如下:

asciidoctor -> asciidoctor -> docbook -> dblatex -> pdf

示例生成文件:

make: my.adoc
  asciidoc -b docbook my.adoc
  dblatex my.xml
Run Code Online (Sandbox Code Playgroud)

此讨论页面表明 asciidoc 主要设计用于编译为 docbook。