Basta cambiar una palabra: sustituya style=numeric por style=authoryear en la línea \usepackage y todas las citas del texto, junto con todas las entradas de la bibliografía, saldrán con otra forma. Esa única palabra es casi todo el argumento a favor de biblatex y de su backend biber. El BibTeX clásico encerraba el formato en un programa .bst escrito en un lenguaje de pila; biblatex devuelve el formato a macros de LaTeX que se pueden leer y redefinir, y deja el lado de los datos —lectura, desambiguación, ordenación— al programa biber. Esta página cubre el preámbulo que lo sostiene (\usepackage[backend=biber, style=…]{biblatex}, \addbibresource, \printbibliography), la compilación latex → biber → latex → latex, los comandos de cita \autocite, \parencite y \textcite, y el accidente más común: un editor que sigue llamando a bibtex mientras la bibliografía se queda vacía.
biblatex frente a biber: cuál es el paquete y cuál el programa
biblatex es un paquete de LaTeX; biber es un programa externo. biblatex decide el aspecto de las citas y de la bibliografía. biber lee el .bib, resuelve las referencias cruzadas, determina dónde hay que desambiguar nombres de autor, ordena todo y escribe un .bbl. Con BibTeX, ambas tareas convivían dentro de un mismo archivo .bst: el procesamiento de datos y el formato, escritos en un lenguaje de pila posfijo que ni siquiera tiene nombre, tal como describe la página de BibTeX. biblatex separó esa capa. En palabras de su propio manual, el formato está ahora «enteramente controlado por macros de TeX», y diseñar un estilo nuevo no exige más que soltura con LaTeX.
- analizar el
.bib(u otra fuente) hacia un modelo de datos interno - resolver
crossref, los conjuntos de entradas y las entradas relacionadas - generar los datos que permiten distinguir nombres y listas de nombres idénticos
- validar estructuralmente cada entrada frente al modelo de datos
- ordenar las listas de referencias, varias listas y en órdenes distintos si hace falta
- escribir el
.bblque biblatex volverá a leer
El backend se elige con la opción backend=, que admite biber, bibtex o bibtex8; el valor predeterminado es biber. Los tres se distinguen ante todo por la codificación de caracteres. El manual de biblatex describe bibtex como compatible «solo con la codificación US-ASCII, con ordenación siempre insensible a mayúsculas», bibtex8 como compatible con US-ASCII y codificaciones de 8 bits como Latin 1, y biber como compatible con US-ASCII, codificaciones de 8 bits, UTF-8, recodificación al vuelo y ordenación según la configuración regional. Dicho de otro modo, elegir bibtex deja sin salida a cualquier bibliografía no inglesa, y esa es la diferencia que más pesa en la práctica. biber está escrito en Perl, pero TeX Live y MacTeX lo distribuyen como binario, así que no hace falta instalar Perl.
Los nombres merecen recordarse. biblatex lo escribió Philipp Lehman, que lo desarrolló en solitario entre 2006 y 2012. En 2012 Philip Kime se hizo cargo del paquete, y desde 2017 Moritz Wemheuer contribuye de forma regular (Audrey Boruvka y Joseph Wright ayudaron durante los años del traspaso). El manual sigue citando a Lehman entre los autores y afirma que «gran parte de su excelente código original permanece en el núcleo». biber es obra de Philip Kime y François Charette y, por estar diseñado expresamente para biblatex, no puede usarse por su cuenta: entregarle un .bst no sirve de nada. Donde bibtex era una herramienta de propósito general, biber es una pieza de biblatex.
Lo mínimo que compila: \usepackage{biblatex}, \addbibresource, \printbibliography
Bastan tres comandos. Cargue el paquete en el preámbulo con \usepackage[backend=biber, style=…]{biblatex}, registre la base de datos —también en el preámbulo— con \addbibresource{refs.bib} y coloque \printbibliography donde deba aparecer la lista. Las citas pasan por \autocite, \parencite y sus parientes. El archivo .bib en sí —tipos de entrada como @article, claves de cita, campos— se escribe igual que para BibTeX y se trata en la página de la base bibliográfica. Precisamente por eso migrar cuesta menos de lo que parece.
\documentclass{article}
\usepackage[backend=biber, style=authoryear]{biblatex}
\addbibresource{refs.bib} % preamble only, and the .bib extension IS required
\begin{document}
\textcite{shannon1948} introduced the measure.
Later work built on it \autocite[see][45]{knuth1984}.
\printbibliography
\end{document}Lo primero que hace tropezar a quien llega de BibTeX es cómo se registra la base de datos. \addbibresource solo va en el preámbulo y sustituye al \bibliography{refs} del final del cuerpo. Además, hay que escribir la extensión .bib: \bibliography no la llevaba, pero \addbibresource exige el nombre completo del archivo, de modo que \addbibresource{refs} no encuentra nada. Repítalo varias veces para repartir la base entre archivos; con biber como backend admite también patrones glob como \addbibresource[glob]{bib/*.bib} y recursos remotos que empiecen por http://. En cuanto a \bibliographystyle, aquí ya no pinta nada: el estilo lo fijan las opciones de \usepackage.
Ese style= es en realidad una opción maestra que carga dos archivos a la vez: style=authoryear trae authoryear.bbx para la bibliografía y authoryear.cbx para las citas. El valor predeterminado es numeric. Solo cuando ambos deban divergir —por ejemplo, una lista autor-año con citas numéricas— se fijan por separado bibstyle= y citestyle=. En el día a día basta con un único style=.
Por qué la compilación va latex → biber → latex → latex
Porque LaTeX no sabe qué ha citado hasta que ha corrido una vez. En la primera pasada, biblatex escribe las claves de cita y toda la configuración en un archivo de control XML, el .bcf. biber lee ese .bcf, lo coteja con el .bib, lo procesa todo y escribe un .bbl. La segunda pasada incorpora el .bbl; la tercera fija las referencias cruzadas y los números de página. La cuenta es la misma que con BibTeX, pero el programa que se invoca es biber, no bibtex, y lo que se le entrega no es el .tex sino el nombre del trabajo, sin extensión. Con pdflatex o lualatex solo cambia el nombre del paso latex; la estructura es idéntica.
$ pdflatex document.tex # 1st pass: writes document.bcf with the cited keys
$ biber document # NOT bibtex, and no .tex extension: reads .bcf, writes .bbl
$ pdflatex document.tex # 2nd pass: pulls the .bbl in
$ pdflatex document.tex # 3rd pass: settles cross-references and page numbersCasi todos los fallos tienen aquí la misma causa: el editor o latexmk sigue configurado para llamar a bibtex. biblatex no escribe en el .aux ni \citation, ni \bibdata, ni \bibstyle, de modo que ejecutar bibtex document produce tres líneas seguidas: I found no \citation commands---while reading file document.aux, I found no \bibdata command---while reading file document.aux, I found no \bibstyle command---while reading file document.aux. No se genera ningún .bbl, y LaTeX responde con LaTeX Warning: Empty bibliography y LaTeX Warning: Citation 'knuth1984' on page 1 undefined, seguidos de Package biblatex Warning: Please (re)run Biber on the file:. Esa última línea es ya la respuesta completa: donde antes corría bibtex, ahora debe correr biber.
$ latexmk -pdf document.tex # detects biblatex in the .fls/.bcf and runs biber itselfTeclear cuatro comandos a mano no es un flujo de trabajo, así que en la práctica lo asume latexmk. Las versiones recientes detectan biblatex, llaman a biber por su cuenta y repiten las pasadas tantas veces como haga falta. Desde un editor, lo más seguro es un motor basado en latexmk: los motores LaTeXmk de TeXShop o una receta latexmk en LaTeX Workshop para VS Code. Overleaf detecta biblatex y ejecuta biber por sí mismo. Solo los scripts de compilación escritos a mano requieren atención: cambie la línea bibtex por biber.
is wrong format version: biber y biblatex forman una pareja de versiones
biber y biblatex solo funcionan en versiones acordes. El manual de biber incluye una tabla de compatibilidad entre ambos y, desde biber 2.7 / biblatex 3.7, los números menores avanzan al mismo paso: TeX Live 2024 trae biber 2.19 con biblatex 3.19. Esto muerde cuando un gestor de paquetes actualiza solo biblatex, o cuando un biber instalado aparte (por ejemplo desde Homebrew) queda antes en el PATH. El síntoma es el aviso Package biblatex Warning: File 'document.bbl' is wrong format version - expected … junto con una bibliografía que se niega a cambiar. El remedio es anodino: actualizar biber y biblatex a la vez desde la misma distribución, borrar document.bbl y recompilar. Comparar biber --version con la versión de biblatex impresa al principio del registro revela de inmediato si se han separado.
style=numeric frente a style=authoryear: cambiar de estilo con una palabra
Escriba otro nombre en style= y las citas y la bibliografía cambian a la vez. biblatex incluye cinco familias de propósito general —numeric, alphabetic, authoryear, authortitle y verbose—, cada una con variantes. Lo curioso es que un estilo fija además, al cargarse, su propio valor por omisión para autocite=: numeric, alphabetic y authoryear ponen autocite=inline, mientras que authortitle y verbose ponen autocite=footnote. El supuesto disciplinar —citas en el texto corrido o fuentes remitidas a nota— viene ya inscrito en el estilo.
| style= | Aspecto de una cita | Supuesto de diseño |
|---|---|---|
numeric | [1] | Valor predeterminado; equivale a la numeración propia de LaTeX y pone autocite=inline |
numeric-comp | [1--3, 7, 8] | Comprime números consecutivos: [8, 3, 1, 7, 2] pasa a [1--3, 7, 8] |
alphabetic | [Jon95] / [JW86] | Equivalente del alpha.bst de BibTeX; etiqueta corta hecha con autor y año |
authoryear | Doe 1995a | Añade a, b… cuando un mismo autor publicó varias veces el mismo año |
authoryear-comp | Doe 1992, 1995a,b | Imprime el autor una sola vez si varias claves de un comando lo comparten |
authortitle | Doe, Short title | Deja el año fuera y usa shorttitle si existe; autocite=footnote |
verbose | Referencia completa y luego forma corta | Da todos los datos en la primera cita, así que puede prescindir de la lista |
Cuando la publicación impone un formato, lo más rápido es buscar un paquete de estilo ya hecho. TeX Live incluye biblatex-ieee para ingeniería, biblatex-apa para psicología y disciplinas vecinas, biblatex-chicago y biblatex-mla para humanidades, biblatex-nature y biblatex-science para ciencias naturales, oscola para el derecho inglés, y una serie de normas nacionales: biblatex-gb7714-2015 para la china GB/T 7714-2015, biblatex-gost para la GOST rusa, biblatex-abnt para la ABNT brasileña y biblatex-dw para las humanidades alemanas. Donde una revista sigue repartiendo únicamente un .bst, quedarse en BibTeX es la respuesta honesta; la página de BibTeX explica dónde cae esa frontera.
\autocite, \parencite o \textcite: qué comando de cita usar
Use \textcite cuando el nombre del autor se lee como parte de la frase, \parencite cuando la cita queda fuera de ella como una nota, y \autocite cuando prefiera que decida el estilo. La razón gramatical de esa elección triple —que «Knuth (1986) demostró» y «…según se ha demostrado (Knuth, 1986)» son objetos gramaticales distintos— se expone en la página de fundamentos de la cita; aquí miramos la mecánica. Todo comando de cita adopta la forma \parencite[prenota][posnota]{clave} y admite varias claves separadas por comas. Un solo corchete da la posnota —\parencite[45]{knuth1984}— y dos dan ambas —\parencite[see][45]{knuth1984}—.
| Comando | Qué imprime | Cuándo recurrir a él |
|---|---|---|
\cite | La etiqueta desnuda, sin añadidos | Cuando no se quieren ni paréntesis ni nota |
\parencite | Toda la cita entre paréntesis (corchetes en estilos numéricos y alfabéticos) | La forma más común: una nota al final de la cláusula |
\textcite | Nombre del autor más año o etiqueta entre paréntesis: Doe (1995) | Cuando el nombre del autor es sujeto de la oración |
\footcite | Lleva toda la cita a una nota al pie, cerrada con punto | Disciplinas que sitúan las fuentes en nota |
\autocite | Se convierte en una de las formas anteriores según autocite= | Cuando la forma de las citas de todo el documento debe poder cambiarse de golpe |
\citeauthor | Solo el nombre del autor | Para nombrar a una persona en el texto sin año ni número |
\citeyear | Solo el año de publicación | Para completar justo después de nombrar al autor en el texto |
\autocite se sitúa un escalón por encima de las demás: en qué se convierte lo decide la opción autocite= de \usepackage. Los valores son plain (se comporta como \cite), inline (\parencite), footnote (\footcite) y superscript. Además, \autocite no solo mira la puntuación que sigue: la mueve. Con autocite=footnote, un signo de puntuación final se desplaza para que la llamada de nota se imprima después de la puntuación. Esa pequeña cortesía es la que permite pasar un documento entero de citas en el texto a citas en nota sin volver a puntuar frase por frase.
Para citar varias obras a la vez, cada una con su posnota, existen las formas multicite terminadas en s. \parencites[35]{key1}[88--120]{key2}{key3} mantiene un solo par de paréntesis y da a cada obra su rango de páginas; \autocites y \footcites siguen el mismo patrón. Y si sus dedos aún recuerdan natbib de los años de BibTeX, \usepackage[natbib=true]{biblatex} deja disponibles \citep, \citet y compañía como alias. Es un puente cómodo durante la migración, aunque un documento nuevo responde de forma más previsible a un cambio de estilo si se atiene a los comandos propios de biblatex.
sorting= y sortlocale=: ordenar bien una bibliografía no inglesa
El orden lo fija sorting=. El valor por omisión es nty, las iniciales de name, title, year. Hay además nyt (nombre, año, título), ynt (año, nombre, título), ydnt (año descendente) y none, que deja las entradas en orden de cita. Todo ello se cambia sin tocar el .bib. Con BibTeX estas decisiones quedaban enterradas en el .bst y solo se alcanzaban eligiendo entre plain, unsrt y alpha.
A eso se añade que «el orden correcto» de las mismas cadenas depende de la lengua. biber delega ese trabajo en el módulo de Perl Unicode::Collate, que implementa por completo el algoritmo de ordenación Unicode (UCA), y superpone luego los ajustes de configuración regional del CLDR. El efecto se ve enseguida. En alemán, sortlocale=de_DE da Mohr → Möller → Muster; con el orden de guía telefónica, sortlocale=de_DE_phonebook, la ö cuenta como oe y la lista pasa a ser Möller → Mohr → Muster. El español es más llamativo: en ortografía tradicional, sortlocale=es_ES_trad trata la ch como letra propia, de modo que Chávez se ordena después de Cortázar (con el es_ES moderno queda Cela → Chávez → Cortázar). El manual de biber lo advierte expresamente: el spanish de babel remite al es_ES moderno, así que quien necesite el orden tradicional debe escribir es_ES_trad por su cuenta.
\usepackage[
backend=biber,
style=authoryear,
sorting=nyt, % name, year, title
sortlocale=de_DE_phonebook, % locale tailoring: umlauts sort as oe/ue/ae
maxbibnames=99, % list every author in the bibliography
maxcitenames=2, % but shorten to "et al." inside citations
backref=true % back-links from each entry to its citations
]{biblatex}Un algoritmo de ordenación solo puede trabajar con los caracteres que se le entregan, y ese límite se nota en japonés, chino y coreano. sortlocale=ja_JP aplica en efecto el ajuste japonés, pero los kanji no llevan lectura, de modo que esperar un orden gojūon o pinyin acaba en decepción. Si el orden debe seguir la lectura, la lectura tiene que estar en los datos: la lectura de un nombre va en sortname y una clave de ordenación cualquiera en sortkey. El manual de biblatex llama a sortkey la clave de ordenación maestra: si está presente, la ordenación se rige por ella e ignora todo lo demás salvo presort. Para esa única entrada que se niega a colocarse, es el último recurso que siempre funciona.
La misma línea \usepackage gobierna también cómo se truncan las listas de autores. maxnames vale 3 por omisión y minnames 1; maxbibnames y maxcitenames heredan sin más el valor de maxnames si no se indican. Así, maxnames es el padre y los otros dos, sus hijos. La combinación a la que se recurre de verdad es la del código anterior: todos los autores en la bibliografía (maxbibnames=99) y solo dos nombres más «et al.» en las citas (maxcitenames=2), algo que maxnames por sí solo no sabe expresar. Añada backref=true y cada entrada terminará con las páginas en que fue citada, lo que se agradece al corregir un manuscrito largo.
Dividir la bibliografía: \printbibliography[type=…] y keyword=
\printbibliography puede aparecer tantas veces como haga falta, con un filtro distinto cada vez. Las claves son type= (solo ese tipo de entrada), nottype= (todo menos ese tipo), keyword= y notkeyword= (filtrado por el campo keywords del .bib), category= y notcategory= (clases declaradas con \DeclareBibliographyCategory), más heading= y title= para los encabezados. Separar fuentes primarias de secundarias, o libros de artículos, no cuesta por tanto ningún cambio en los datos. Para condiciones más finas, \defbibfilter define un filtro propio, y es además la herramienta para partir una lista por lenguas, ya que el campo langid solo conmuta la localización y la partición de palabras y no divide nada por sí mismo.
\printbibliography[type=article, title={Journal articles}]
\printbibliography[type=book, title={Books}]
\printbibliography[keyword=primary, title={Primary sources}]
\printbibliography[nottype=misc, heading=bibintoc, title={Everything else}]La decisión se resuelve en dos pasos. Si la publicación le entrega un .bst, quédese con BibTeX; si el formato es cosa suya, pase a biblatex y biber. Una vez dado el paso solo quedan tres tareas: escribir \usepackage[backend=biber, style=…]{biblatex} y \addbibresource{refs.bib} en el preámbulo, colocar \printbibliography y llamar a biber en lugar de a bibtex, o dejárselo a latexmk. El archivo .bib es común a ambos, así que nada de lo acumulado se pierde. Lo que ha cambiado, cuarenta años después, es que alterar el formato ya no significa reescribir un .bst, sino cambiar una palabra en \usepackage.