我正在尝试使用 pandoc 将 markdown 文件转换为 docx。具体来说,我的 markdown 文件使用了 YAML 和 LaTEX 语法(为了简单起见,我尽可能使用 markdown)。这是文档示例:
% Title
---
author: Name
header-includes:
- \usepackage{cleveref}
toc-title: Content
---
# Heading
See \cref{image}.
![Image caption\label{image}](image.png)
如果我运行pandoc source.md -o output.docx --table-of-contents
它,它不会正确呈现\cref{image}
。但是,如果我将其转换为 PDF(pandoc source.md -o output.pdf --table-of-contents
),它会;但其他 Markdown 语法(例如[see @citation]
)则不会。
我究竟做错了什么?
答案1
这是两个问题。需要花一些时间来适应正确的语法,你似乎对 yaml 有点误解(记得参考用户手册所以我们开始吧:
图片未打印在 pdf 中。发生这种情况的原因是,除非传递了 -s 标志,否则 pandoc 通常无法理解 markdown 中的纯 latex。因此,如果您希望此图像同时以 pdf 和 docx 格式呈现,则需要使用正确的 pandoc 语法:
![la lune](lalune.jpg "Voyage to the moon")
。删除 \label{image} 部分。如果您想要标签,则需要传递标志 --filter pandoc-crossref。语法也略有变化以接受标签:![Caption](file.ext){#fig:label}
pandoc 没有采纳引用。这里有一些问题,首先你必须在 yaml 中指向一个 bibtex 文件。语法是
bibliography: '/file.bib'
。其次你必须将另一个标志传递--filter pandoc-citeproc
给 pandoc。第三,使用 @citation 来引用它。
最后,你的 md 应该看起来更像这样:
---
title: Title
author: Name
toc-title: Content
bibliography: '/file.bib'
header-includes:
- \usepackage{cleveref}
---
# Heading
See @fig:label. This dude has talked about it previously: @thedude2017
![Caption](file.ext){#fig:label}
# References
用 构建它pandoc file.md --filter pandoc-crossref --filter pandoc-citeproc -o file.pdf
。