2016-10-07 39 views
0

我使用的是Django,並將bibtex存儲在我的模型中,並且希望能夠以格式化HTML字符串的形式傳遞我的視圖參考,使其看起來像哈佛參考樣式。使用pybtex將bibtex轉換爲格式化的HTML參考書目。哈佛風格

使用Pybtex does not recogonize bibtex entry中描述的方法,可以將bibtex字符串轉換爲pybtex BibliographyData對象。我相信應該有可能從此得到基於文檔https://pythonhosted.org/pybtex/api/formatting.html的HTML格式,但我似乎無法使其工作。

Pybtex似乎設置爲從命令行而不是python使用,並且它在互聯網上使用的例子很少。有沒有人做過這樣的事情?也許將bibtex傳遞給我的模板並使用像https://github.com/pcooksey/bibtex-js這樣的JavaScript庫試圖獲得哈佛風格的近似值會更容易一些?

回答

1

要做到這一點,我修改了一些代碼here。我不確定這種特定格式樣式的名稱是什麼,但很可能您可以更改/編輯它。這是它的外觀:

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>