将混合 markdown/yaml/latex 转换为 docx

将混合 markdown/yaml/latex 转换为 docx

我正在尝试使用 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 有点误解(记得参考用户手册所以我们开始吧:

  1. 图片未打印在 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}

  2. 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

相关内容