如何从bibtex文件中自动创建引文列表,最好采用markdown(更具体地说,pandoc)格式?
我正在建立我的个人学术网站。正如大多数个人学术网站所做的那样,我包括一个列出我的出版物的页面。但是,我真的不想手写每个引文,所以我试图找到一个从一个或多个bibtex文件创建引文的自动方法。
理想情况下会有一个工具我可以将包含我的出版物的bibtex文件交给它,它会吐出markdown(我正在使用pandoc + makefile来创建网站)。我目前还没有意识到任何这样的工具。
使我的需求更加复杂的是,出版物的简单平面列表是不够的。我需要能够列出不同类别的不同出版物(同行评审和非同行评审)。虽然如果像我这样的工具确实存在,我可以轻松地维护多个bibtex文件并使用一些bash-fu来实现这一点。
答案 0 :(得分:11)
您可以使用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
并获得降价版本。
如果您不想手动创建输入降价文件,您可以编写一个脚本来从您的bibtex文件生成它,如果它包含足够的元数据来区分同行评审和非同行评审的论文。
答案 1 :(得分:9)
出于同样的原因我想要同样的事情(使用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,源自芝加哥风格。当然你可以使用它(它是根据Creative Commons Attribution-Share Alike 3.0获得许可),但你也可以创建你的。
所以,现在(在您发布问题很长一段时间后),我希望您有完整的答案。
答案 2 :(得分:1)
正如其他人所指出的,最简单的方法是使用适当的CSL文件。 Kieran Healy在他的pandoc-templates存储库hosted on GitHub中提供了这样一个文件。
chicago-syllabus.csl文件对标准进行了微小的改动 芝加哥Notes CSL文件,因此您可以使用它来输出引文 文档正文中的信息。这使它有用 简历和课程大纲中的参考文献清单。
只需下载文件并将选项--csl==<link to CSL-file>
传递给pandoc(其中<link to CSL-file>
是存储下载文件的路径。
答案 3 :(得分:1)
2012 年和 2014 年之前评分最高的答案当然是有效的;但是,请注意,自 pandoc 2.11 版 (2020-10-11) 起,pandoc 现在接受 bibtex(和其他一些书目数据格式)作为输入格式。这使得解决方案更接近原始问题所寻求的内容:“一个工具,我可以将包含我的出版物的 bibtex 文件交给它,它会吐出 markdown”,以便“我可以轻松维护多个 bibtex 文件并使用一些 bash-福”。现在您可以做到这一点:将您的出版物保存在单独的 bibtex 文件中,然后以递归方式将它们提供给 pandoc(例如,pandoc -f bibtex --citeproc --csl=chicago-annotated-bibliography.csl pubs.bib -o pubs.md
)并将结果连接或包含在您的其他文本中。
答案 4 :(得分:0)
我在我的个人网站上使用bibtexbrowser。它是一个易于集成到其他网站的PHP脚本(只要服务器支持PHP)。遗憾的是,这个解决方案不会产生降价,但它相当灵活,并且具有直接读取bibtex文件的优势。
或者,您可以使用bibtex2html(或类似工具)生成HTML。 Pandoc连接多个输入文件,您可以在Markdown中使用原始html,因此可以直接将其包含在您需要的任何位置。如果Markdown需要成为你的最终输出,你也可以使用Pandoc将HTML转换为Markdown。