BibTeX es la forma clásica de gestionar referencias: registras cada obra una sola vez en una base .bib, y la bibliografía se genera automáticamente a partir de ella. En el documento solo llamas a una clave con \cite. Cambia el archivo de estilo (.bst) y los mismos datos se reformatean para ajustarse al formato de cualquier revista. Esta página cubre cómo escribir un archivo .bib, qué hacen \bibliographystyle y \bibliography, y la secuencia distintiva “latex → bibtex → latex → latex”.
Qué es BibTeX
Puedes listar referencias a mano al final de un documento (el entorno thebibliography), pero eso deja de funcionar cuando crece el número y reutilizas las mismas obras en varios artículos. BibTeX es un programa separado, escrito por Oren Patashnik hacia 1985, que se ejecuta junto a TeX/LaTeX pero aparte. Su trabajo es extraer de una base bibliográfica solo las obras que realmente citaste, formatearlas con el estilo elegido y escribirlas en una forma que el documento pueda insertar.
El mecanismo tiene tres partes: el archivo .bib (los datos brutos de las referencias), las llamadas \cite más dos comandos en el documento (\bibliographystyle y \bibliography), y el archivo .bst (el estilo) que fija la apariencia. Como los datos y la apariencia están separados, cambiar de destino no toca los datos: cambias una sola palabra de estilo. Es exactamente la idea de “separar estructura y apariencia” que recorre todo LaTeX.
Escribir la base .bib
Un archivo .bib es una lista de entradas. Cada entrada declara un tipo como @article y luego, entre llaves, da una clave de cita seguida de campos. La clave de cita es un identificador que eliges (por ejemplo knuth1984) y debe coincidir exactamente con \cite{...} en el documento. Los campos tienen la forma fieldname = {value}, separados por comas.
@book{knuth1984,
author = {Donald E. Knuth},
title = {The {TeX}book},
publisher = {Addison-Wesley},
year = {1984}
}
@article{shannon1948,
author = {Claude E. Shannon},
title = {A Mathematical Theory of Communication},
journal = {Bell System Technical Journal},
volume = {27},
number = {3},
pages = {379--423},
year = {1948}
}
@inproceedings{lamport1987,
author = {Leslie Lamport},
title = {Document Production: Visual or Logical?},
booktitle = {Proceedings of TUG},
year = {1987},
pages = {19--24}
}Conviene aprender los tipos comunes y sus campos obligatorios. @article es un artículo de revista (author, title, journal, year); @book es un libro (author o editor, title, publisher, year); @inproceedings es un trabajo en actas de congreso (author, title, booktitle, year). Otros incluyen @phdthesis/@mastersthesis para tesis, @incollection para un capítulo de libro y @misc para elementos varios como páginas web. Qué campos son obligatorios en cada tipo lo decide el estilo.
Las llaves alrededor de un valor tienen significado práctico. Anidar un par adicional dentro, como en title = {The {TeX}book}, protege ese fragmento de los cambios de mayúsculas/minúsculas del estilo (para que TeX no se convierta en Tex). Para varios autores, sepáralos con and: author = {A. Smith and B. Jones}; BibTeX y el estilo se encargan del orden y la abreviación de nombres.
Los dos comandos en el documento
En el documento colocas dos comandos donde debe aparecer la bibliografía (normalmente al final del cuerpo). \bibliographystyle{plain} selecciona el estilo, es decir, qué .bst usar, y \bibliography{references} le dice a BibTeX qué base de datos leer y además imprime la lista de referencias en ese lugar. Observa que este último no lleva la extensión .bib: aunque el archivo sea references.bib, escribes references.
\documentclass{article}
\begin{document}
TeX was created by Knuth~\cite{knuth1984}, building on
Shannon's information theory~\cite{shannon1948}.
\bibliographystyle{plain}
\bibliography{references}
\end{document}En el cuerpo, \cite{knuth1984} apunta a la clave de cita knuth1984 en el .bib. Si las claves no coinciden, la obra no aparecerá (obtendrás una advertencia de referencia indefinida). Solo las obras citadas aparecen en la lista; cualquier cosa en el .bib que no cites se ignora (usa \nocite{*} para forzar toda la base). Las variantes de \cite — citas múltiples, localizadores de página, el paquete cite — se tratan en la página “Citing basics”.
La secuencia de compilación (cuatro ejecuciones)
Aquí es donde BibTeX suele confundir al principio. Para producir la lista correctamente, la receta clásica ejecuta las herramientas cuatro veces en el orden latex → bibtex → latex → latex. ¿Por qué varias pasadas? Porque BibTeX es un programa separado de LaTeX y ambos intercambian información mediante archivos auxiliares (.aux y .bbl).
- 1.ª ejecución de latex — procesa el cuerpo y escribe en el archivo
.auxlas claves citadas y los ajustes de\bibliographystyle/\bibliography. En este momento la lista de referencias sigue vacía. - bibtex — lee el
.auxpara saber qué claves se citaron, qué estilo y qué.bib; extrae las entradas correspondientes del.bib; las formatea según las reglas del.bst; y escribe el archivo.bbl. - 2.ª ejecución de latex — incorpora el
.bbly compone la lista de referencias, pero las referencias cruzadas, como el número de cada entrada, aún no están resueltas. - 3.ª ejecución de latex — los números y marcadores
\citese estabilizan, de modo que las citas del texto y la lista de referencias coinciden exactamente.
$ latex document.tex # writes document.aux (cite keys)
$ bibtex document # reads .aux + .bib + .bst, writes .bbl
$ latex document.tex # pulls in .bbl
$ latex document.tex # resolves all referencesTen en cuenta que a bibtex le pasas el nombre auxiliar (el nombre del trabajo sin extensión), no el .tex. La receta es idéntica con pdflatex: basta sustituir latex por pdflatex. Como escribir cuatro comandos cada vez es tedioso, en la práctica se delega en latexmk, que inspecciona el .aux para decidir si BibTeX debe ejecutarse y cuántas pasadas hacen falta, normalmente terminando en una sola invocación.
$ latexmk -pdf document.tex # runs latex/bibtex/latex as many times as neededEstilos estándar (.bst)
Un estilo fija el orden de clasificación, la etiqueta (un número o una abreviatura) y cómo se abrevian los nombres de autor y los títulos de revistas. BibTeX incluye cuatro estilos estándar, y conocerlos cubre muchas necesidades. Cambias de estilo simplemente pasando el nombre a \bibliographystyle{...}.
| Estilo | Orden | Etiqueta / rasgo |
|---|---|---|
plain | Alfabético por autor | Numerado [1]; el predeterminado habitual |
unsrt | Orden de primera cita | Numerado [1] (mismo formato que plain) |
alpha | Por etiqueta (aprox. autor, año) | Etiquetas alfanuméricas como [Knu84] |
abbrv | Alfabético por autor | Abrevia nombres de pila y títulos de revistas |
Además, también se incluyen de serie varios estilos habituales por campo: ieeetr (aspecto IEEE Transactions, numerado en orden de cita), muy usado en ingeniería; acm (estilo ACM) en informática; y siam (estilo SIAM) en matemáticas aplicadas. Sociedades y editoriales también distribuyen sus propios archivos .bst, que sustituyes según los requisitos. La ventaja de BibTeX es que cambiar el estilo no requiere cambiar nada en el .bib ni en las llamadas \cite del cuerpo.
Japonés: pbibtex / upbibtex
El bibtex básico está orientado a texto occidental y no ordena ni procesa bien campos con nombres de autores o títulos japoneses. Por eso pLaTeX/upLaTeX proporcionan comandos conscientes del japonés. pbibtex es para pLaTeX y ordena por puntos de código EUC-JP; upbibtex es para upLaTeX y ordena por puntos de código Unicode. Ambos descienden de JBibTeX (desarrollado por Shouichi Matsui) y amplían las funciones internas para que los campos japoneses no se corten a mitad de carácter.
El uso refleja el caso occidental: en la secuencia de compilación simplemente sustituyes latex por platex (o uplatex) y bibtex por pbibtex (o upbibtex). También existen equivalentes japoneses de los estilos: jplain para plain, junsrt para unsrt, jalpha para alpha y jname, que pone el apellido al inicio como en “[Kin80] Kinoshita: …” (también hay estilos de sociedades como jipsj).
$ uplatex document.tex # 1st pass: writes .aux
$ upbibtex document # Japanese-aware: writes .bbl
$ uplatex document.tex # pulls in .bbl
$ uplatex document.tex # resolves references
$ dvipdfmx document.dvi # DVI -> PDFComo upLaTeX pasa por DVI, terminas convirtiendo a PDF con dvipdfmx (este flujo se detalla en las páginas sobre japonés y conversión DVI). latexmk puede configurarse para llamar a pbibtex/upbibtex, de modo que las cuatro pasadas manuales también se automatizan para japonés.
Límites de BibTeX, y biber/biblatex
BibTeX es maduro y se usa mucho, pero su diseño es antiguo y tiene varias limitaciones: asume codificaciones de 8 bits y no maneja Unicode limpiamente (los nombres multilingües y acentos son incómodos), su ordenación es poco flexible, y crear un formato complejo implica escribir .bst, un pequeño lenguaje peculiar orientado a pila.
Para levantar esas limitaciones llegaron biblatex (un paquete de LaTeX) y su backend predeterminado, biber. Manejan Unicode de forma nativa, permiten controlar ordenación y formato mediante opciones del lado de LaTeX, y evitan escribir .bst. Para proyectos nuevos, biblatex/biber es una opción sólida, cubierta en su propia página.