【问题标题】:Automatically create bibliography from bibtex in pandoc/markdown without inline citations自动从 pandoc/markdown 中的 bibtex 创建参考书目,无需内联引用
【发布时间】:2012-11-24 21:20:00
【问题描述】:

如何从 bibtex 文件中自动创建引文列表,最好是 markdown(更具体地说是 pandoc)格式?

我正在建立我的个人学术网站。与大多数个人学术网站一样,我在其中包含一个列出我的出版物的页面。但是,我真的不想手动编写每条引文,所以我试图找到一种从一个或多个 bibtex 文件创建引文的自动化方法。

理想情况下,有一个工具我可以将包含我的出版物的 bibtex 文件交给它,它会吐出降价(我正在使用 pandoc + makefile 创建网站)。我目前不知道有任何此类工具。

使我的需求更加复杂的是,简单的平面出版物列表是不够的。我需要能够列出不同类别下的不同出版物(至少同行评审和非同行评审)。虽然如果确实存在我想要的上述工具,我可以轻松维护多个 bibtex 文件并使用一些 bash-fu 来完成此操作。

【问题讨论】:

    标签: markdown pandoc bibtex citations


    【解决方案1】:

    您可以为此使用 pandoc 自己的引用支持。按照以下几行创建一个降价文件:

    # Peer-reviewed papers
    
    1. [@me2001]
    2. [@me2002]
    
    # Non-peer-reviewed papers
    
    1. [@me1999]
    2. [@me1998]
    

    me1999 等是您的 bibtex 文件中的键。然后找到或创建一个 CSL 文件,以您想要的方式格式化引文,并使用 pandoc 进行处理:

    pandoc --bibliography mybiblio.bib --csl mycsl.csl -o citations.html -s citations.txt
    

    或者您可以添加-t markdown 并根据需要获取降价版本。

    如果您不想手动创建输入 Markdown 文件,您可以编写一个脚本从您的 bibtex 文件生成它,前提是它包含足够的元数据来区分同行评审和非同行评审的论文。

    【讨论】:

    • 这是我最初尝试的。发生的事情是它在键的位置放置了文本引用,例如(Me 2001),而不是完整的书目引用。完整的参考书目放在文件的末尾。这仅仅是因为我使用了 CSL 吗?
    • 约翰这还能用吗?从 .md 转换为 .md 时,我无法解析引文;上面提供的代码对我不起作用。
    • 您可以为此使用“markdown-citations”格式。见这里:groups.google.com/d/msg/pandoc-discuss/DJ_XxxvkJEg/KjJ6iDiVAwAJ
    【解决方案2】:

    出于同样的原因,我想要同样的东西(使用Hakyll 创建网站),但我发现了“问题”:CSL 文件。

    Pandoc,事实上,完美地完成了这项工作,the solution provided by MacFarlane 是正确的,但它缺乏对 CSL 文件规则的解释——它定义了你是否要在中间文本中有编号的引用最后附上出版物清单。

    Julien Tanguy 创造了一个CSL style that puts the publication simplied information from BibTeX in the place where the reference is cited,源自芝加哥风格。当然,您可以使用它(它已获得知识共享署名-相同方式共享 3.0 许可),但您也可以创建自己的。

    所以,现在(在您发布问题很久之后),我希望您能得到完整的答案。

    【讨论】:

      【解决方案3】:

      2012 年和 2014 年早期评分最高的答案当然是有效的;但是,请注意,自 pandoc 版本 2.11 (2020-10-11) 以来,pandoc 现在接受 bibtex(和一些其他书目数据格式)作为输入格式。这使得解决方案更接近原始问题所寻求的:“一种工具,我可以将包含我的出版物的 bibtex 文件交给它,它会吐出降价”,以便“我可以轻松维护多个 bibtex 文件并使用一些 bash-福”。现在您可以完全做到这一点:将您的出版物保存在单独的 bibtex 文件中,然后将它们递归地提供给 pandoc(例如,pandoc -f bibtex --citeproc --csl=chicago-annotated-bibliography.csl pubs.bib -o pubs.md),并将结果连接或包含在您的其他文本中。

      【讨论】:

        【解决方案4】:

        正如其他人所指出的,完成此任务的最简单方法是使用适当的 CSL 文件。 Kieran Healy 在他的 pandoc-templates 存储库中提供了这样一个文件,hosted on GitHub

        chicago-syllabus.csl 文件对标准进行了微小的更改 Chicago Notes CSL 文件,因此您可以使用它来输出引文 文档正文中的信息。这使得它对 简历和课程大纲中的参考文献列表。

        只需下载文件并将选项--csl==<link to CSL-file> 传递给pandoc(其中<link to CSL-file> 是您存储下载文件的路径。

        【讨论】:

          【解决方案5】:

          我将bibtexbrowser 用于我的个人网站。它是一个易于集成到其他网站的 PHP 脚本(只要服务器支持 PHP)。不幸的是,这个解决方案不会生成markdown,但它相当灵活,并且具有直接读取bibtex文件的优势。

          您也可以使用 bibtex2html(或类似工具)生成 HTML。 Pandoc 连接多个输入文件,您可以在 Markdown 中使用原始 html,因此可以直接将其包含在您需要的任何地方。如果 Markdown 需要成为您的最终输出,您还可以使用 Pandoc 将 HTML 转换为 Markdown。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-11
            • 2014-12-13
            • 2020-06-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-06
            相关资源
            最近更新 更多