我在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
我不明白为什么包含这一个词会导致失败。
答案 0 :(得分:1)
您的one.md
可能不会以换行结束。 Pandoc连接所有输入文件,在文件之间添加单换行符。因此产生的输入将是:
# Report
Lorem.
---
header-includes:
- \usepackage{fancyhdr}
...
结果,YAML块的开始破折号被解释为Lorem.
的下划线,然后将其作为第二级标题读取。如果---
破折号上方的行是ATX样式的标题,则不会发生这种情况。
只需在one.md
的末尾添加换行符,所有内容都应按预期方式运行。