19

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

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

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

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

4

5 回答 5

14

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

# Peer-reviewed papers

1. [@me2001]
2. [@me2002]

# Non-peer-reviewed papers

1. [@me1999]
2. [@me1998]

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

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

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

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

于 2012-11-26T02:59:21.307 回答
11

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

事实上,Pandoc完美地完成了这项工作,MacFarlane 提供的解决方案是正确的,但它缺乏对 CSL 文件规则的解释——它定义了你是否要在中间文本中使用带有编号的引用列表出版物的最终与否。

Julien Tanguy创建了一种CSL 风格,将来自 BibTeX 的出版物简化信息放在引用参考的地方,源自芝加哥风格。当然,您可以使用它(它已获得知识共享署名-相同方式共享 3.0 许可),但您也可以创建自己的。

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

于 2014-01-05T15:10:46.313 回答
2

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)并将结果连接或包含在您的其他文本中。

于 2021-04-10T22:12:49.600 回答
1

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

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

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

于 2016-09-22T11:02:57.790 回答
0

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

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

于 2013-05-20T17:12:43.820 回答