我有一篇已发表的论文,打算将其用于我的毕业论文。我通常使用 Mendeley 创建 .bib 文件。但是,我想知道是否有一种聪明而简单的方法来创建此 .bib 文件,只需提供论文或论文的 doi,它就会给我参考文献的 .bib 文件?
例如我想要一个包含本文参考文献的.bib文件: https://www.cambridge.org/core/journals/microscopy-and-microanalysis/article/estimating-step-heights-from-topdown-sem-images/ECA77A258DAA20A73CA510AADFFD4F08
答案1
它不是 TeX,但是我使用这个 python 3 代码来做这样的事情:
from isbnlib import meta
from isbnlib.registry import bibformatters
import sys
import urllib.request
from urllib.error import HTTPError
import time
### PARA DOI
#BASE_URL = 'http://dx.doi.org/'
BASE_URL = 'https://www.doi.org/'
ListaDOI = ['10.1119/1.5124814',
'10.1103/PhysRevB.100.245121',
'10.1103/PhysRevB.100.224507',
'10.1103/PhysRevE.100.052303',
'10.1103/PhysRevFluids.4.124002',
'10.1103/PhysRevD.100.126011',
'10.1103/PhysRevA.100.052322']
### PARA ISBN
SERVICE = 'openl'
getInfoISBN = bibformatters['bibtex']
ListaISBN = []
#timestamp=time.strftime("%d-%m-%Y-%H%M%S")
timestamp=time.strftime("%d-%m-%Y-%H")
filename='bibliography-'+timestamp+'.txt'
g=open(filename,'a')
for doi in ListaDOI:
url = BASE_URL + doi
req = urllib.request.Request(url)
req.add_header('Accept', 'application/x-bibtex')
time.sleep(2)
try:
with urllib.request.urlopen(req) as f:
bibtexDOI = f.read().decode()
print(bibtexDOI)
g.write('\n' + bibtexDOI + '\n\n')
except HTTPError as e:
if e.code == 404:
print('\n DOI {} nao encontrado. DOI not found.\n'.format(doi))
g.write('DOI: {}'.format(doi)+' não encontrado. Not found.\n\n')
else:
print('Serviço indisponível. Service unavailable.')
sys.exit(1)
for isbn in ListaISBN:
try:
bibtexISBN = getInfoISBN(meta(isbn, SERVICE))
print(bibtexISBN)
g.write('\n' + bibtexISBN + '\n\n')
except:
print('\n ISBN {} nao encontrado. ISBN not found.\n'.format(isbn))
g.write('ISBN: {}'.format(isbn)+' não encontrado. Not found.\n\n')
g.close()
它使用该网站http://dx.doi.org/来获取信息。因此,您可以在“ListaDOI”(您需要多少个)中列出 doi 编号,然后使用 python 运行。它将显示 bib 条目并将其保存到“bibliography.txt”中。
编辑:添加了 isbn 搜索。它使用特定的 python 库,即 isbnlib。将 isbn 放入“ListaISBN”的方式与放入“ListaDOI”的方式相同。