使用 pandoc 在 pdf 文件中导出所有 yaml 书目

Posted

技术标签:

【中文标题】使用 pandoc 在 pdf 文件中导出所有 yaml 书目【英文标题】:Exporting all yaml bibliographic in a pdf file using pandoc 【发布时间】:2013-12-03 09:11:37 【问题描述】:

我正在使用Leo、yaml 和 pandoc 创建一个 pdf。为此,我的工作流程是这样的:

    我将所有相关项目收集为zotero 集合 我将它们全部导出为 CSL JSON,并使用 biblio2yaml 将其转换为 yaml 我创建了一个 Leo 大纲,其中包含 markdown 节点和一个 yaml 节点,其中包含我想要编写的所有信息以及所有收集的参考书目项目,并制作了一个小脚本来遍历大纲并根据需要导出内容。

    终于结束了我运行的输出文件:

    pandoc --filter pandoc-citeproc output.markdown -o output.pdf
    

并且工作得很好。问题是我想告诉 pandoc 包括所有参考书目项目,无论它们是在降价文本中用[@reference] 引用,还是只是收集在嵌入式 yaml 块中用于参考书目。这可能吗?如果没有,有一些方法可以编写 pandoc 脚本来做类似的事情吗?

PS:我在 pandoc 的降价中使用了 [-@reference] 技巧,试图将参考书目的非显式引用放在导出的文件中,但随后我在导出的 pdf 中得到了一年的括号,正如人们所期望的那样,所以这不是要走的路。

【问题讨论】:

【参考方案1】:

最终,我想在 pandoc 中添加一个语法,用于标记引文以包含在参考书目中,而不是将它们放在文本中。

但现在,最好的办法是将所有这些参考文献都放在文本中,并修改 CSL 文件,以便不打印实际的引文(只是参考书目)。我无法就如何做到这一点提供指导,但我听说其他人这样做,所以我知道这是可能的。

【讨论】:

谢谢约翰。目前,我刚刚将所有参考书目转换为 markdown 并粘贴到文本中。顺便说一句,pandoc 很棒。感谢您制作/启动它:-)【参考方案2】:

pandoc 的 README1 给出了解决方案。您需要定义一个虚拟的 nocite 元数据字段并将引用放在那里:

# References

The bibliography will be inserted after this header.  Note that
the `unnumbered` class will be added to this header, so that the
section will not be numbered.

If you want to include items in the bibliography without actually
citing them in the body text, you can define a dummy `nocite` metadata
field and put the citations there:

---
nocite: |
  @item1, @item2
...

@item3

In this example, the document will contain a citation for `item3`
only, but the bibliography will contain entries for `item1`, `item2`, and
`item3`.

【讨论】:

以上是关于使用 pandoc 在 pdf 文件中导出所有 yaml 书目的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Emacs,ESS,pandoc-mode和polymode从Rmd文件创建pdf?

从 Markdown 到 PDF:如何使用 Pandoc 更改字体大小?

如何在Java中导出PDF的n个列?

windows使用Pandoc将Markdown转换为PDF文件

pandoc转pdf文件使用latex模板介绍(Linux环境)

使用 pandoc 从 Markdown 转换为 PDF 时设置边距大小