Descargar información bibliográfica automáticamente desde MathSciNet

MathSciNet es una base de datos que contiene información bibliográfica y reseñas sobre casi cualquiér publicación matemática. Escribí un pequeño script para shell (Linux/Mac) que automáticamente añade entradas bibliográficas a un archivo .bib usando los números MR de matscinet. Mostraré dos ejemplos, uno que usa natbib y otro con biblatex

Para que el código funcione se requiere acceso a MathSciNet. Muchas universidades tienen una suscripción que permite a todos sus alumnos acceder al sitio, así que sólo hay que conectarse a internet desde la red universitaria.

Instalación

El script usa wget, grep y sed los cuáles son comandos estándar en Linux así que usualmente no es necesario instalar nada.

Para usar el script hay que descargarlo desde github, moverlo a la carpeta bin, o la carpeta /usr/bin si queremos que esté disponible para todos los usuarios, luego darle permisos de ejecución. Esto se puede lograr desde una terminal con los siguientes comandos.

wget \
https://raw.githubusercontent.com/geriom/getmathscinetbib/master/getmbib \
-P $HOME/bin/

chmod a+x $HOME/bin/getmbib

Si el directorio bin no existe en tu carpeta personal tienes que crearlo antes de correr los comandos anteriores.

Obtener los números MR

El script funciona asumiendo que se usaron los números MR de mathscinet como claves en los comandos \cite{ }. ¿Cómo obtenemos estos números?, abre MathSciNet en tu navegador y usa el formulario para buscar el recurso que necesitas añadir a tu bibliografía. Por ejemplo, probemos con el conocido libro An introduction to algebraic topology de Rotman.

MathSciNet search box

El número MR se muestra justo encima del nombre del autor, en este caso dicho número es MR0957919.

../../../_images/mathscinet2.jpg

En las siguientes secciones explicaré como usar esta información.

Ejemplo con natbib

Para empezar crearé en sencillo archivo .tex, que llamaré nb_test.tex:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage{natbib}
\bibliographystyle{unsrtnat}

\title{Bibliography From MathSciNet}
\author{Geri O M}
\date { }

\begin{document}

\maketitle

This document shows how to use the MR keys to cite sources from MathSciNet.
For instance, we can cite this great Topology book \cite{MR0957919}, also
we can add another item here \cite{MR1194180} about singularities. And why
not, let's throw the famous Einstein paper in the list \cite{einstein}.

\medskip

\bibliography{nb_sample}

\end{document}

Como puedes ver, usé el número MR en las llaves del comando \cite{ }, también observemos que una de las fuentes citadas no está en MathSciNet, así que la información bibliográfica ya deberíamos tenerla en nuestro archivo de bibliografía nb_sample.bib. Este es el contenido del archivo bibliográfico en este momento:

@article{einstein,
    author =  "Albert Einstein",
    title = "{Zur Elektrodynamik bewegter K{\"o}rper}.  ({German}) [{On}
             the electrodynamics of moving bodies]",
    journal = "Annalen der Physik",
    volume = "322",
    number = "10",
    pages = "891--921",
    year = "1905",
    DOI = "http://dx.doi.org/10.1002/andp.19053221004" }

Ahora compilemos el documento desde la terminal:

pdflatex nb_sample.tex

Se mostrarán algunas advertencias porque hay referencias bibliográficas faltantes. Usaremos esas advertencias para extraer las entradas faltantes usando el script. Desde una terminal

getmbib nb_test nb_sample

El primer argumento de este comando es el nombre del archivo tex, el segundo es el nombre del archivo bib, ambos sin la extensión. Deberías ver lo siguiente luego de ejecutar el comando:

Retrieving bibliographies from MathScinet...
item MR0957919 added
item MR1194180 added
... Done! 2 bibliography sources added to nb_sample.bib

Ahora podemos revisar el archivo nb_sample.bib. Abre el archivo en tu editor favorito, debería tener ahora las entradas faltantes:

@article{einstein,
 author =  "Albert Einstein",
 title = "{Zur Elektrodynamik bewegter K{\"o}rper}.  ({German}) [{On}
          the electrodynamics of moving bodies]",
 journal = "Annalen der Physik",
 volume = "322",
 number = "10",
 pages = "891--921",
 year = "1905",
 DOI = "http://dx.doi.org/10.1002/andp.19053221004" }

 @book {MR0957919,
     AUTHOR = {Rotman, Joseph J.},
      TITLE = {An introduction to algebraic topology},
     SERIES = {Graduate Texts in Mathematics},
     VOLUME = {119},
  PUBLISHER = {Springer-Verlag, New York},
       YEAR = {1988},
      PAGES = {xiv+433},
       ISBN = {0-387-96678-1},
    MRCLASS = {55-01},
   MRNUMBER = {957919},
 MRREVIEWER = {P. J. Kahn},
        DOI = {10.1007/978-1-4612-4576-6},
        URL = {http://dx.doi.org/10.1007/978-1-4612-4576-6},
 }
 @book {MR1194180,
     AUTHOR = {Dimca, Alexandru},
      TITLE = {Singularities and topology of hypersurfaces},
     SERIES = {Universitext},
  PUBLISHER = {Springer-Verlag, New York},
       YEAR = {1992},
      PAGES = {xvi+263},
       ISBN = {0-387-97709-0},
    MRCLASS = {32Sxx (14J70 32S25 32S50 57M25 57R45 58C27)},
   MRNUMBER = {1194180},
 MRREVIEWER = {Aleksandr G. Aleksandrov},
        DOI = {10.1007/978-1-4612-4404-2},
        URL = {http://dx.doi.org/10.1007/978-1-4612-4404-2},

¡Excelente!. Tratemos de compilar el documento de nuevo.

pdflatex nb_test.tex
bibtex nb_test
pdflatex nb_test.tex
pdflatex nb_test.tex

El Archivo PDF resultante mostrará la bibliografía correctamente:

../../../_images/mathscinet2.jpg

Ejemplo con BibLaTeX

Si estás ejecutando los comandos conforme lees esta entrada es necesario eliminar los archivos aux, log y bbl antes de seguir, de lo contrario puede que aparezcan errores inesperados.

BibLaTeX es un sistema de bibliografías moderno más flexible que natbib, permite usar diferentes idiomas y es más fácil escribir nuevos estilos de bibliografía. El siguiente ejemplo es muy similar al anterior. Los nombres de los archivos tex y bib son los mismos.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage[
    backend=biber,
    style=alphabetic,
    sorting=ynt
    ]{biblatex}
\addbibresource{nb_sample.bib}

\title{Bibliography From MathSciNet}
\author{Geri O M}
\date { }

\begin{document}

\maketitle

This document shows how to use the MR keys to cite sources from MathSciNet.
For instance, we can cite this great Topology book \cite{MR0957919}, also
we can add another item here \cite{MR1194180} about singularities. And why
not, let's throw the famous Einstein paper in the list \cite{einstein}.

\medskip

\printbibliography
\end{document}

El archivos de bibliografías es exactamente el mismo que en la sección anterior. Intentemos compilar el documento.

pdflatex nb_test.tex

Otra vez veremos advertencias sobre bibliografías faltantes. Ejecutemos el script para descargarlas.

getmbib nb_test nb_sample

El mensaje en la terminal confirma que nuevas entradas se añadieron a nuestro archivo:

Retrieving bibliographies from MathScinet...
item MR0957919 added
item MR1194180 added
... Done! 2 bibliography sources added to nb_sample.bib

Si abres el archivo nb_sample.bib ahora incluirá las referencias faltantes, tal como se mostró en la sección anterior. Compilemos el documento de nuevo:

pdflatex nb_test.tex
biber nb_test
pdflatex nb_test.tex
pdflatex nb_test.tex

Finalmente tenemos el archivo PDF:

../../../_images/mathscinet3.jpg

Por favor reporta cualquier error en la sección de comentarios o a través de github.