- › IntroducciónDescripción: Qué es biblio-py, para qué sirve y sus características importantes
- › InstalaciónObtener biblio-py. Instrucciones de instalación manual y en un sistema Gentoo Linux
- › Uso de los programasUso de los programas incluidos con el paquete
- › Hágalo Ud. mismoInstrucciones para usar biblio-py en sus programas
- › Uso avanzadoDetalles y uso avanzado del paquete
Descripción^ TOP
Biblio-py es un paquete escrito en el lenguaje python que permite administrar bibliografía. contiene dos sub-paquetes:
- yapbib: "Yet Another Python BIBliography" es otra Herramienta para manejo de bibliografía dirigido especialmente (aunque no en forma exclusiva) para archivos BibTeX.
- query_ads: Una herramienta simple para extraer referencias de la base de datos de Harvard
El paquete está funcionando bien pero trataré de realizar los ajustes necesarios si son reportados.
Características^ TOP
- Programas de Software Libre, con licencia GPL (Libre para usar-modificar-redistribuir).
- Modelo de programación orientado a objetos.
- Lectura de formato BibTeX y formato portable de la base de datos de Harvard (ADS portable format).
- Conversión a formatos BibTex, LaTeX, HTML y XML.
- Usa un formato interno standard en python a través del módulo cPickle.
- Convierte acentos y algunos caracteres especiales a XML.
- Entiende (algunas) expresiones matemáticas. Por ahora principalmente subíndices y superíndices. Es relativamente extender estas capacidad.
- Incluye algunos programas simples para manejar bases de datos, obtener bibliografía de la base de datos online y para extraer las citas de un documento LaTeX.
- Puede importar el paquete en sus programas y así utilizar toda la capacidad de python para manipular los datos acorde a sus necesidades.
Instalación^ TOP
Puede instalarse usando easy_install, directamente del código fuente o a través de un ebuild, adecuado para una instalación en Gentoo Linux
Using Easy Install
Simplemente escriba en una terminal:
$>easy_install biblio-py
o
$>pip install biblio-py
Si está actualizando a una nueva versión, simplemente escriba
$>pip install --upgrade biblio-py
Instalación Manual
- Descargue el archivo comprimido con la última versión
- Grábelo en un directorio temporario.
- Descomprima el archivo e instale utilizando el setup
$>tar -xvzf biblio-py-x.x.x.tar.gz $>cd biblio-py-x.x.x $>./setup.py install
Instalación Gentoo
- Descargue el ebuild y cópielo en su portage local tree.
- Ejecute:
$>echo dev-python/biblio-py >> /etc/portage/package.keywords $>ebuild biblio-py-x.x.x.ebuild digest $>emerge biblio-py
Modo de uso^ TOP
El paquete incluye tres scripts:
get_papers.py, bibmanage.py y
bibextract.py.
Para obtener ayuda en cualquiera de ellos escriba:
<script> -h
<script> --help
Ejemplos de bibmanage
- Ejemplo: Importe el archivo BibTeX myrefs.bib y guarde los
datos en el formato interno en la el archivo
myrefs.dmp:
A continuación puede utilizar directamente el archivo$>bibmanage.py myrefs.bib -d myrefs.dmpmyrefs.dmpal cual se accede mucho más rápidamente que a un archivo bibtex. - Ejemplo: Para unir dos archivos bibtex y guardarlo en uno nuevo
mientras además se guarda la base en formato interno al archivo
database.dmputilice:
La primera línea no modificará la clave identificatoria de las entradas bibtex (keys). La segunda (comportamiento default) hará todas las claves uniformes siguiendo nuestra convención standard, que para artículos es:$>bibmanage.py myrefs1.bib myrefs1.bib -f bib -o bib allrefs.bib -o database.dump --keep-keys $>bibmanage.py myrefs1.bib myrefs1.bib -f bib -o allrefs.bib -o database.dump
Las primeras siete letras (o menos) del nombre del primer autor + año + abreviatura de revista + p + página. - Ejemplo: Seleccione de un archivo bibtex comprimido (bz2) sólo
aquellas entradas que tienen una dada frase en la clave original y
con salida por pantalla:
$>bibmanage.py myrefs.bib.bz2 --keep-keys -s substring:_code -o - - Ejemplo: Para seleccionar de un archivo bibtex comprimido (bz2)
sólo aquellas entradas que tienen una dada frase en la clave
interna (como describimos anteriormente) y con salida por pantalla
utilice uno de los dos comandos:
$>bibmanage.py myrefs.bib.bz2 --keep-keys -s substring:key -o - $>bibmanage.py myrefs.bib.bz2 -s substring:_code -o - - Ejemplo: Seleccione sólo aquellas entradas cuyo autor es (entre
otros) autor1,B. y escriba la salida en formato HTML al archivo
autor1.html use uno de los siguientes (el uso de opciones cortas o
largas es equivalente):
$>bibmanage.py myrefs.dmp -s autor1,B:author -o autor1.html -f html $>bibmanage.py myrefs.dmp --search=autor1,B:author --output=autor1.html --format=html - El último ejemplo puede hacerse sobre el archivo bibtex pero es
un proceso un poco más lento
$>bibmanage.py myrefs.bib -s autor1,B:author -o autor1.html -f html - Ejemplo: Seleccione sólo aquellas entradas cuyo autor es (entre
otros) autor1,B. pero no autor2,C e imprímalos en formato LaTeX al
archivo ejemplo.tex:
$>bibmanage.py myrefs.dmp -s autor1,B:author -x autor2,C:author -o ejemplo.tex -f - Restrinja los resultados del último ejemplo a trabajos
publicados entre los años 2004 y 2006
$>bibmanage.py myrefs.dmp -x autor1,B:author -x autor2,C:author \ --start-year=2004 --end-year=2006 -o ejemplo.tex -f
Ejemplos get_papers
- Ejemplo: Descargue referencias a todos los trabajos en la base
de datos de Harvard para un autor dado en un dado año
De esta manera obtiene entradas en formato BibTeX por pantalla. Existen opciones para cambiar este comportamiento$>get_papers.py --author=Einstein,A. --year=1905 - Ejemplo: Uso de algunas opciones
$>get_papers.py --author=Einstein,A. --year=1905 -f html -o biblio.html $>get_papers.py --author=Einstein,A. --year=1905 -f latex --output=biblio.tex $>get_papers.py --author=Einstein,A. --year=1905 -f latex --sort=date,reverse
Ejemplos bibextract
- Ejemplo: El uso más simple de este script para obtener
un archivo con las entradas citadas en un documento
document.texodocument.auxsería:
Este comando creará un archivo:$>bibextract document.tex $>bibextract document.auxdocument.bibcon todas las entradas citadas.
Hágalo usted mismo^ TOP
Es relativamente fácil usar los módulos en sus programas (scripts) en python. Utilice los scripts incluidos como ejemplos de uso. Son relativamente pequeños pero tienen todos los ingredientes necesarios. A continuación mostramos algunos ejemplos más simples:Script simple
El ejemplo más simple para convertir su base de archivos bibtex a una lista en latex podría ser algo como:
import yapbib.biblist as biblist
#
# Change here to your files
bibfile= yourbib.bib # input database
outputfile=myfile.tex # output latex file
# latexstyle, overrides default values
latexstyle={ 'url': None, # Do not include url
'doi': None, # Do not include doi
'author': (r'\textbf{',r'}'), # Write the authors in boldface
}
b=biblist.BibList()
b.import_bibtex(bibfile)
# Sort them in your specified order and export them to latex list
b.sort(['year','firstpage','author','journal'],reverse=True)
b.export_latex(outputfile,style=latexstyle)
Manipulación extra de los datos
Puede manipular las entradas a su necesidad antes de convertirlas (aunque ese es el propósito del programa incluido: bibmanage.py)
import yapbib.biblist as biblist
#
# Change here to your files
bibfile= yourbib.bib # input database
outputfile=myfile.tex # output latex file
# latexstyle, overrides default values
latexstyle={ 'url': None, # Do not include url
'doi': None, # Do not include doi
'author': (r'\textbf{',r'}'), # Write the authors in boldface
}
b=biblist.BibList()
b.import_bibtex(bibfile)
# Select only some items
items= b.search(findstr='name1',fields=['author','key'])
# Create a reduced database
bout= biblist.BibList()
for it in items:
bout.add_item(b.get_item(it),it)
# Sort them in your specified order and export them to latex list
bout.sort(['year','firstpage','author','journal'],reverse=True)
bout.export_latex(outputfile,style=latexstyle)
Explore el módulo en forma interactiva
>>> import yapbib.biblist as biblist
>>> b=biblist.BibList()
>>> b.import_bibtex('mybib.bib')
>>> items= b.List() # Shows the keys of all entries
>>> items
['KEY1','KEY2']
>>> it= b.get_item(items[0]) # Get first item
>>> it= b.get_items()[0] # (Alternative) to get first item
>>> it.get_fields() # Show all fields for item
>>> it.preview() # Show a preview (brief info)
>>> bib= it.to_bibtex() # get item in BibTeX form
>>> tex= it.to_latex() # get item in LaTeX form
>>> html= it.to_html() # get item in html form
>>> print it # print full information on the item
>>> print unicode(it) # Use this if it has non-ascii characters