我正在 Mac 终端命令行上运行以下 Pandoc 2.0.3 命令:
pandoc one.md "metadata.yaml" -o two.pdf
这应该采用 markdown 文件 one.md
并使用 yaml 文件 metadata.yaml
输出 two.pdf
,这是一个最小版本的这是:
---
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
我不明白为什么包含这个词会导致失败。
最佳答案
您的 one.md
可能不以换行符结尾。 Pandoc 连接所有输入文件,在文件之间添加单个换行符。所以结果输入将是:
# Report
Lorem.
---
header-includes:
- \usepackage{fancyhdr}
...
因此,YAML block 的开头破折号被解释为 Lorem.
的下划线,然后被读取为二级 header 。如果 ---
破折号上方的行是 ATX 样式 header ,则不会发生这种情况。
只需在 one.md
末尾添加一个换行符,一切都会按您预期的方式工作。
关于latex - Pandoc 使用 Markdown 正文文本和 YAML 元数据文件生成 PDF 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47538386/