【问题标题】:Pandoc Error producing PDF with markdown body text and YAML metadata filePandoc 错误生成带有降价正文文本和 YAML 元数据文件的 PDF
【发布时间】:2017-11-28 18:18:48
【问题描述】:

我正在 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

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

【问题讨论】:

    标签: latex yaml pandoc


    【解决方案1】:

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

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

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

    只需在 one.md 的末尾添加一个换行符,一切都会按照您的预期进行。

    【讨论】:

    • 这个答案解决了这个问题。需要换行。
    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多