2016-10-07 5 views
0

私はDjangoを使用しています。私のモデルにbibtexを格納していて、ハーバード参照スタイルのように書式設定されたHTML文字列の形式で参照を渡すことができるようにしたいと思います。pybtexを使用してbibtexから書式設定されたHTML書誌に変換します。ハーバードスタイル

Pybtex does not recogonize bibtex entryに記載されている方法を使用すると、ビブテックス文字列を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> 
関連する問題