latex - Pandoc 使用 Markdown 正文文本和 YAML 元数据文件生成 PDF 时出错

标签 latex yaml pandoc

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

相关文章:

ubuntu - Ubuntu 无法安装任何软件

python - 为 pandas 绘图函数创建与 tex 兼容的名称

graphics - 在 LaTeX 中,有没有办法将图形的文件名包含到标题中?

yaml - Swagger 不呈现请求体

markdown - 使用 pandoc 和 xelatex 将 markdown 文件编译为 pdf 时出现 "Undefined control sequence.\file_get:nnN"错误

latex - 如何更改 tex 数学模式下的默认背景颜色?

ruby - 在 YAML 变量中包含 jekyll/liquid 模板数据?

bash - 由于未安装 "hstore"Postgres 扩展,CircleCI 测试失败

markdown - 从 Markdown 转换为 pandoc 时的\newcommand 环境

pdf - Pandoc Markdown 到 PDF