使用markdown正文和YAML元数据文件生成PDF的Pandoc错误

时间:2017-11-28 18:18:48

标签: latex yaml pandoc

我在Mac终端命令行上运行以下Pandoc 2.0.3命令:

pandoc one.md "metadata.yaml" -o two.pdf

这应使用markdown文件one.md并使用yaml文件two.pdf输出metadata.yaml,其最小版本为:

---
header-includes:
- \usepackage{fancyhdr}
...

此Pandoc运行按照以下版本的one.md生成PDF:

# Report

但是,它无法为以下版本的one.md生成PDF,其中包含正文:

# Report

Lorem.

生成的错误消息为:

Error producing PDF.
! LaTeX Error: Can be used only in preamble.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.65 header-includes: - \usepackage

我不明白为什么包含这一个词会导致失败。

1 个答案:

答案 0 :(得分:1)

您的one.md可能不会以换行结束。 Pandoc连接所有输入文件,在文件之间添加换行符。因此产生的输入将是:

# Report

Lorem.
---
header-includes:
- \usepackage{fancyhdr}
...

结果,YAML块的开始破折号被解释为Lorem.的下划线,然后将其作为第二级标题读取。如果---破折号上方的行是ATX样式的标题,则不会发生这种情况。

只需在one.md的末尾添加换行符,所有内容都应按预期方式运行。