在pandoc/markdown中从bibtex自动创建书目,无需内联引用

在pandoc/markdown中从bibtex自动创建书目,无需内联引用,markdown,pandoc,bibtex,citations,Markdown,Pandoc,Bibtex,Citations,如何从bibtex文件自动创建引文列表,最好是采用markdown(更具体地说,是pandoc)格式? 我正在建立我的个人学术网站。正如大多数个人学术网站所做的那样,我在网页上列出了我的出版物。然而,我真的不想手工写每一篇引文,所以我试图找到一种从一个或多个bibtex文件创建引文的自动化方法 理想情况下,有一个工具,我可以将一个包含我的出版物的bibtex文件交给它,然后它会抛出降价(我正在使用pandoc+makefile创建网站)。我目前不知道有任何这样的工具 使我的需要进一步复杂化的是,

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

我正在建立我的个人学术网站。正如大多数个人学术网站所做的那样,我在网页上列出了我的出版物。然而,我真的不想手工写每一篇引文,所以我试图找到一种从一个或多个bibtex文件创建引文的自动化方法

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


使我的需要进一步复杂化的是,仅仅列出出版物是不够的。我需要能够列出不同类别下的不同出版物(至少是同行评审和非同行评审)。虽然,如果确实存在像我希望的那样的工具,我可以轻松地维护多个bibtex文件,并使用一些bash fu来实现这一点。

您可以使用pandoc自己的引文支持。沿以下行创建标记文件:

# Peer-reviewed papers

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

# Non-peer-reviewed papers

1. [@me1999]
2. [@me1998]
其中
me1999
etc是bibtex文件中的密钥。然后查找或创建一个CSL文件,该文件以您希望的方式格式化引用,并使用pandoc进行处理:

pandoc --bibliography mybiblio.bib --csl mycsl.csl -o citations.html -s citations.txt
或者您可以添加
-t markdown
,并根据需要获得一个markdown版本

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

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


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

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

事实上,这项工作是完全正确的,但是它对CSL文件的规则缺乏解释,这是定义了在中间文本中是否有一个编号的引用,最后有一个出版物列表。

创建了一个源于芝加哥风格的。当然,您可以使用它(它是根据知识共享署名共享3.0许可的),但您也可以创建自己的


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

正如其他人所指出的,实现这一点最简单的方法是使用适当的CSL文件。Kieran Healy在他的pandoc模板存储库中提供了这样一个文件

chicago-Celletus.csl文件对标准进行了微小的更改 芝加哥注释CSL文件,以便您可以使用它输出引文 文档正文中的信息。这使它对您的应用非常有用 简历和课程大纲中的参考文献列表


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

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

这是我最初尝试的。发生的事情是,它将文本内引用放在键的位置,例如(Me 2001),而不是完整的参考书目。完整的参考书目被放在文档的末尾。这是因为我使用了CSL吗?这仍然有效吗John?在从.md转换到.md时,我很难解析引用;上面提供的代码对我不起作用。您可以使用“标记引用”格式进行分析请参阅此处: