jueves, 9 de febrero de 2012

BibTeX: Manejo de bibliografia en LaTeX

A la hora de realizar un trabajo en una universidad o tecnológico es común y de hecho esperado que se pidan los nombres de los libros, artículos y sitios web de donde se obtuvo la información, a esto se le conoce como referencias bibliograficas.

Dado que son requeridas en todo documento de investigación serio, LaTeX proporciona un sistema para su manejo y presentación.

Sin embargo, como muchas cosas sobre el LaTeX, los tutoriales disponibles en linea son muy ávidos en mostrar su uso sin dar a conocer las peculiaridades que pueden aparecer, desde pasos extra necesarios para compilar adecuadamente dichas referencias a como hacer que todas sean visibles.

Por esto, y siguiendo el mismo espíritu que las otras entradas sobre LaTeX, se presentara como utilizar, y las peculiaridades y detalles, del sistema de referencias BibTeX.

Antes de comenzar hay que aclarar que los comandos que se mostraran son los utilizados por el entorno LaTeX tex live para sistemas UNIX, por lo que si esta utilizando otro entorno LaTeX,  es posible que los comandos cambien.

Archivos de bibliografía

Para comenzar el archivo de referencias a usar se muestra a continuación, cópielo en un archivo con nombre "dibujar.bib"

@book{teoria_comics,
   author    = "Will Eisner",
   title    = "Theory of Comics and Sequential Art",
   edition    = "Second",
   year        = "1990",
   publisher    = "Poorhouse Press"
}

@book{entintado,
   author    = "Gary Martin and Steve Rude",
   title    = "The Art of Comic-Book Inking",
   edition    = "First",
   year        = "1997",
   publisher    = "Dark Horse"
}

@misc{solo_lapiz,
   author    = "Jason Brubaker",
   title    = "Inking a Graphic Novel?",
   year        = "2010",
   howpublished    = {\url{http://www.remindblog.com/2010/02/18/inking-graphic-novel/}},
   note        = "[Accesado 9-Feb-2012]"
}



Notara que en el archivo hay tres secciones que comienzan con el carácter @ y terminan con }, cada una de estas secciones es una entrada de la bibliografía.

Estas siguen siempre el mismo formado que es

@<tipo_de_referencia>{<identificador>,
   <campo> = <valor del campo>,
   ...

}


Pudiendo poner la cantidad de campos que sean necesarios, siempre recordando que todos los campos, con excepción del ultimo, deben de llevar una coma antes de comenzar el siguiente campo.

Los tipos de referencia disponibles y sus campos pueden consultarse en la documentación de LaTeX, pero se dará algo de atención a uno en particular, el tipo de referencia misc.

Tipo misc

Si bien LaTeX maneja los tipos de referencias clásicos, libros, artículos, conferencias, etc, no tiene un campo exclusivo para referencias electrónicas como pueden ser paginas web o vídeos disponibles en internet, ante esto puede usarse el tipo misc, junto con el campo howpublished para hacer referencia a referencias electrónicas.

Citando la bibliografía

Ahora que tenemos una colección de referencias bibliográficas, que en este caso son sobre dibujo de comics y novelas gráficas, a llegado el momento de ponerla en uso y citarla desde algún documento, para motivos del ejemplo se utilizara el siguiente archivo, el cual se recomienda copiarlo a un archivo con nombre referencias.tex

\documentclass[12pt, spanish]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}%cambie utf8 a latin1 en Windows
\usepackage{hyperref}

\begin{document}

En este documento de muestra haremos una referencia a un libro sobre arte secuencial \cite{teoria_comics} y a una pagina con tips para entintar comics \cite{solo_lapiz}.

\bibliographystyle{plain}
\bibliography{dibujar}

\end{document}


En este documento se usa el comando \cite{<identificador>} para hacer referencia a un elemento de la bibliografía, esto hará que aparezca un numero en donde esta \cite, el cual indica a que numero de entrada nos estamos refiriendo.
Los otros dos comandos nuevos son \bibliographystyle{plain} y \bibliography{dibujar} , el primero indica como deseamos que se vea la bibliografía y en general plain hará el trabajo.

El segundo por su parte es esencial, pues le indica a LaTeX, como se llama la bibliografía, o bibliografías, que utilizaremos, su uso es bastante simple

\bibliography{<archivo_bib_sin_extension>}

sencillamente hay que poner el nombre del archivo de bibliografía sin extensión entre las llaves, en el caso de usar mas de una bibliografía basta con poner los nombre de los archivos sin extensión separados por comas.

Hecho esto basta usar el comando pdflatex (o la instrucción de compilar si esta usando un entorno para obtener....

Detalles y observaciones sobre BibTeX en el entorno Tex Live

LaTeX Warning: There were undefined references.

Un mensaje de advertencia ¡Informándonos que hay referencias sin declarar en el documento!

No solo eso, si revisamos la salida pdflatex observaremos que marca como no definidas todas las citas que se hicieron en el documento, y si abrimos el archivo resultante veremos esto:


Figura 1: Documento generado por pdflatex.
Este es, de nuevo, uno de esos errores que no es mencionado por ninguno de los tutoriales, lo que me hace pensar que es algo que solo pasa en tex live, y que es un dolor de cabeza averiguar que salio mal, lo que pasa aquí es simple, se requiere un paso extra para poder utilizar las bibliografías BibTeX en Tex Live.

Este paso es ejecutar el comando bibtex en el archivo .aux generado por pdflatex, en este caso particular referencias.aux, el hacer esto mostrara cualquier error de sintaxis en los archivos de bibliografía utilizados (dibujar.bib en este caso) y si todo sale bien generara los archivos referencias.bbl y referencias.blg los cuales contienen las referencias en un formato que pdflatex puede comprender, hecho esto  basta correr el comando pdflatex referencias.tex en dos ocasiones (se requiere ejecutarlo dos veces para detectar y asignar los identificadores de referencias en el archivo y se requiere tanto en Tex Live como en MikTex) para obtener el archivo correcto mostrado en la figura 2.

Figura2: Salida correcta.

Aquí ya se pueden ver no solo los números de referencia bibliográfica, si no que además, al final del documento, donde se llamo al comando \bibliography{dibujar}, aparecen los datos de bibliografía de las entradas que se citaron.

Para concluir es posible que en algún documento desee mostrar toda la bibliografía que se tiene, pero no se desea citar toda desde el texto, para este caso basta con agregar el comando \nocite{*} antes de bibliographystyle{plain} y \bibliography{dibujar}, al hacer esto le esta indicando a LaTeX que no se harán citas, pero se desea mostrar la bibliografía completa.

Si agrega este comando al archivo referencias.tex y lo compila con los comandos:
  1. pdflatex referencias.tex
  2. bibtex referencias.aux
  3. pdflatex referencias.tex
  4. pdflatex referencias.tex
En ese orden obtendrá el resultado mostrado en la figura 3.

Figura 3: Bibliografia usando \nocite{*}


Referencias:

stackOverflow - Compiling LaTex bib source
LaTeX/Bibliography Management