使用 pybtex 将 bibtex 转换为格式化的 HTML 参考书目,例如哈佛风格

2024-05-17

我正在使用 Django 并将 bibtex 存储在我的模型中,并且希望能够以格式化 HTML 字符串的形式向我的视图传递引用,使其看起来像哈佛引用样式。

使用中描述的方法Pybtex 无法识别 bibtex 条目 https://stackoverflow.com/questions/19306354/pybtex-does-not-recogonize-bibtex-entry我可以将 bibtex 字符串转换为 pybtex BibliographyData 对象。我相信应该可以根据文档将其转换为 HTML 格式https://pythonhosted.org/pybtex/api/formatting.html https://pythonhosted.org/pybtex/api/formatting.html但我似乎无法让它发挥作用。

Pybtex 似乎被设置为从命令行而不是 python 使用,并且互联网上使用它的示例很少。有人做过这样的事吗?也许将 bibtex 传递到我的模板并使用像这样的 javascript 库会更容易https://github.com/pcooksey/bibtex-js https://github.com/pcooksey/bibtex-js尝试获得哈佛风格的近似值?


为此,我改编了一些代码here http://pybtex-docutils.readthedocs.io/en/latest/quickstart.html#overview。我不确定这种特定格式样式的名称是什么,但很可能您可以更改/编辑它。它看起来是这样的:

import io
import six
import pybtex.database.input.bibtex
import pybtex.plugin

pybtex_style = pybtex.plugin.find_plugin('pybtex.style.formatting', 'plain')()
pybtex_html_backend = pybtex.plugin.find_plugin('pybtex.backends', 'html')()
pybtex_parser = pybtex.database.input.bibtex.Parser()

my_bibtex = '''
@Book{1985:lindley,
author =    {D. Lindley},
title =     {Making Decisions},
publisher = {Wiley},
year =      {1985},
edition =   {2nd},
}
'''

data = pybtex_parser.parse_stream(six.StringIO(my_bibtex))
data_formatted = pybtex_style.format_entries(six.itervalues(data.entries))
output = io.StringIO()
pybtex_html_backend.write_to_stream(data_formatted, output)
html = output.getvalue()

print (html)

这会生成以下 HTML 格式的参考:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><meta name="generator" content="Pybtex">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bibliography</title>
</head>
<body>
<dl>
<dt>1</dt>
<dd>D.&nbsp;Lindley.
<em>Making Decisions</em>.
Wiley, 2nd edition, 1985.</dd>
</dl></body></html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pybtex 将 bibtex 转换为格式化的 HTML 参考书目,例如哈佛风格 的相关文章

随机推荐