2016-10-07 2 views
0

Ich benutze Django und binde Bibtex in meinem Modell und möchte in der Lage sein, meine Referenz in Form einer formatierten HTML-Zeichenkette zu übergeben, die wie der Harvard-Referenzstil aussieht.Verwenden von pybtex zum Konvertieren von Bibtex in formatierte HTML-Bibliographie in z.B. Harvard style

Mit der in Pybtex does not recogonize bibtex entry beschriebenen Methode ist es mir möglich, eine Bibtex-Zeichenfolge in ein pybtex BibliographyData-Objekt umzuwandeln. Ich glaube, dass es möglich sein sollte, von diesem zu einem HTML-Format zu kommen, das auf der Dokumentation https://pythonhosted.org/pybtex/api/formatting.html basiert, aber ich bin einfach nicht in der Lage, es zum Laufen zu bringen.

PYBTEX scheint eher von der Kommandozeile als von Python verwendet zu werden, und es gibt sehr wenige Beispiele dafür, dass es im Internet verwendet wird. Hat jemand so etwas getan? Vielleicht wäre es einfacher, den Bibtex an meine Vorlage zu übergeben und eine JavaScript-Bibliothek wie https://github.com/pcooksey/bibtex-js zu verwenden, um eine Annäherung an den Harvard-Stil zu erhalten?

Antwort

1

Dazu habe ich einen Code aus here angepasst. Ich bin nicht sicher, wie der Name dieses bestimmten Formatierungsstils lautet, aber höchstwahrscheinlich können Sie ihn ändern/bearbeiten. Dies ist, wie es aussieht:

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) 

Dies erzeugt die folgende HTML-formatierte Referenz:

<!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> 
Verwandte Themen