2016-10-07 1 views
0

저는 장고를 사용하고 있습니다. 내 모델에 bibtex를 저장하고 있으며, 하버드 레퍼런스 스타일처럼 보이도록 포맷 된 HTML 문자열 형식으로 참조를 전달할 수 있기를 원합니다.pybtex를 사용하여 bibtex에서 형식화 된 HTML 참고 문헌으로 변환합니다. 하버드 스타일

Pybtex does not recogonize bibtex entry에 설명 된 방법을 사용하면 bibtex 문자열을 pybtex BibliographyData 개체로 변환 할 수 있습니다. 나는 이것이 문서 형식의 https://pythonhosted.org/pybtex/api/formatting.html을 기반으로하는 HTML 형식으로 가능해야한다고 생각하지만, 제대로 작동하지 않는 것 같습니다.

Pybtex는 파이썬이 아닌 명령 행에서 사용하도록 설정되어있는 것으로 보이며 인터넷에서 사용되는 예는 거의 없습니다. 아무도 이런 짓하지 않았 니? 아마도 템플릿에 bibtex를 전달하고 https://github.com/pcooksey/bibtex-js과 같은 자바 스크립트 라이브러리를 사용하여 하버드 스타일의 근사치를 얻는 것이 더 쉬울까요?

답변

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> 
를이는 모습입니다
관련 문제