4

通常,科学期刊网站和其他来源会提供可下载*.bib的文件来引用个别文章。如果我使用这些,我喜欢保持原样,而不是将它们合并到一个文件中。在命令行上,可以通过--bibliography多次传递该选项来指定多个文件。我还可以在*.md文档本身的 YAML 元数据中列出多个文件吗?

4

2 回答 2

5

如果你想使用 biblatex 作为引文格式化程序,你可以在你的 YAML front matter 中设置多个 bib 文件:

---
bibliography:
- mybib1.bib
- mybib2.bib
---

您需要编译:

pandoc myfile.md -o myfile.pdf --biblatex

这是因为乳胶模板包含一个$for(bibliography)$循环:

$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
于 2017-04-26T09:08:00.373 回答
3

可以在文档元数据中指定参考书目,即通过 YAML 块中的 Markdown:

---
bibliography:
- one.bib
- two.bib
- three.bib
---

这仅在通过命令行pandoc-citeproc传递作为过滤器调用时才有效。--filter=pandoc-citeproc例如,

$ pandoc --filter=pandoc-citeproc --from=markdown --to=latex my-file.md

要理解为什么,我们必须退后一步,看看 pandoc 处理引用的方式。通常,即如果没有通过--natbibor请求替代引用方法--biblatex,pandoc 使用 pandoc-citeproc 来处理引用,确保跨不同格式的可比引用处理。pandoc-citeproc作为pandoc 过滤器工作:程序接收 pandoc 的 JSON 格式的完整文档并执行以下步骤:

  1. 书目元数据字段中获取书目文件;
  2. 收集文档中的所有引用;
  3. 创建参考书目并在文档中插入适当的文本;
  4. 将生成的文档再次编码为 JSON 并写入标准输出。

然后,Pandoc 将使用修改后的文档继续其工作。

bibliography可以通过命令行或在文档本身中设置该字段。使用命令行选项或 YAML 元数据的唯一区别是,pandoc-citeproc如果参考书目作为 CLI 参数给出,pandoc 会自动调用。由于我们不希望这样,我们需要明确告诉 pandoc 必须调用 pandoc-citeproc 过滤器。

于 2018-09-14T14:13:23.727 回答