Markdown 我可以在Pandoc元数据中指定多个书目(BibTeX)文件吗?

Markdown 我可以在Pandoc元数据中指定多个书目(BibTeX)文件吗?,markdown,pandoc,pandoc-citeproc,Markdown,Pandoc,Pandoc Citeproc,通常,科学期刊网站和其他来源提供可下载的*.bib文件,用于参考个人文章。如果我使用这些,我喜欢保持它们的原样,而不是将它们合并到单个文件中。在命令行上,可以通过多次传递--书目选项来指定多个文件。我还可以在*.md文档本身中列出YAML元数据中的多个文件吗?如果您想使用biblatex作为引文格式化程序,可以在YAML前端设置多个bib文件: --- bibliography: - mybib1.bib - mybib2.bib --- 您需要使用以下工具进行编译: pandoc myfil

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

如果您想使用biblatex作为引文格式化程序,可以在YAML前端设置多个bib文件:

---
bibliography:
- mybib1.bib
- mybib2.bib
---
您需要使用以下工具进行编译:

pandoc myfile.md -o myfile.pdf --biblatex
这是因为latex模板包含一个
$for(参考书目)$
循环:

$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$

可在文档元数据中指定书目,即通过YAML块中的标记:

---
bibliography:
- one.bib
- two.bib
- three.bib
---
仅当通过在命令行上传递
--filter=pandoc citeproc
pandoc citeproc
作为筛选器调用时,此选项才有效。例如:

$ pandoc --filter=pandoc-citeproc --from=markdown --to=latex my-file.md
为了理解原因,我们必须后退一步,看看潘多克处理引用的方式。通常,也就是说,如果没有通过
--natbib
--biblatex
请求替代引文方法,pandoc使用pandoc citeproc处理引文,确保不同格式的引文处理具有可比性
pandoc citeproc
的工作方式是:程序接收pandoc JSON格式的完整文档,并执行以下步骤:

  • 从书目元数据字段获取书目文件
  • 收集文件中的所有引文
  • 创建参考书目并在文档中插入适当的文本
  • 再次将生成的文档编码为JSON并写入标准输出
  • 潘多克随后将使用修改后的文件继续其工作


    参考书目
    字段可以通过命令行或文档本身进行设置。使用命令行选项或YAML元数据之间的唯一区别在于,如果书目作为CLI参数提供,则pandoc会自动调用
    pandoc citeproc
    。由于我们不希望出现这种情况,我们需要明确地告诉pandoc必须调用pandoc citeproc筛选器。

    无论输出格式如何,我都可以使用biblatex吗?我希望能够同时生成PDF和Word文档(
    *.docx
    )。不,您必须使用pandoc citeproc作为latex/beamer以外的输出格式。@tarleb您能回答评论中的信息吗?