
Estoy usando latexmk
with pdflatex
para compilar mi tesis, with biblatex
como referencia y biber
como backend. Se compila bien y crea una salida PDF correcta. Si un cambio en los archivos fuente introduce un error, la primera ejecución pdflatex
falla pero se crea un archivo bcf. La ejecución de biber luego se queja de un archivo bcf con formato incorrecto que indica que la última biblatex
ejecución falló y la compilación se detiene. Sin embargo, después de corregir el error, latexmk
cree que la pdflatex
ejecución estuvo bien e invoca biber
, pero el archivo bcf aún tiene un formato incorrecto.
latexmk
De alguna manera no parece darse cuenta de que hubo cambios en los archivos.
Eliminar el archivo bcf o limpiarlo latexmk -C
hace que primero latexmk
llame pdflatex
y vuelva a crear un archivo bcf correcto. Llamar pdflatex
manualmente también funciona pero anula el propósito de latexmk
. Intenté usarlo -halt-on-error
como opción pdflatex
pero no funciona. Creo recordar que funcionó con TexLive 2014, después de que un intento fallido de ejecución biber
latexmk
se ejecutara pdflatex
primero en el siguiente intento.
Estoy usando TexLive 2015, la versión latexmk
es 4.43a, biber
tiene la versión 2.3. La salida producida es
Latexmk: This is Latexmk, John Collins, 5 February 2015, version: 4.43a.
Rule 'biber thesis': File changes, etc:
Non-existent destination files:
'thesis.bbl'
------------
Run number 1 of rule 'biber thesis'
------------
------------
Running 'biber "thesis"'
------------
Latexmk: applying rule 'biber thesis'...
INFO - This is Biber 2.3
INFO - Logfile is 'thesis.blg'
ERROR - thesis.bcf is malformed, last biblatex run probably failed. Deleted thesis.bbl
INFO - ERRORS: 1
Latexmk: Failed to find one or more biber source files:
NONE
Collected error summary (may duplicate other messages):
biber thesis: Could not find all biber source files for 'thesis'
Latexmk: Use the -f option to force complete processing,
unless error was exceeding maximum runs of latex/pdflatex.
Biber error: [33] Utils.pm:163> ERROR - thesis.bcf is malformed, last biblatex run probably failed. Deleted thesis.bbl
Latexmk: Errors, so I did not complete making targets
Obligatorio mwe.tex:
\documentclass[paper=a4]{scrartcl}
\usepackage[backend=biber]{biblatex}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\addbibresource{Bibliography.bib}
\begin{document}
\autocite{smith_pixel_1995}
\end{document}
Bibliografía.bib
@article{smith_pixel_1995,
title = {A Pixel Is Not A Little Square, A Pixel Is Not A Little Square, A Pixel Is Not A Little Square!},
volume = {6},
url = {http://ftp.alvyray.com/Memos/CG/Microsoft/6_pixel.pdf},
journaltitle = {Microsoft Computer Graphics, Technical Memo},
author = {Smith, Alvy Ray},
urldate = {2016-02-04},
date = {1995}
}
Pasos para reproducir:
- correr
latexmk -pdf mwe
- introducir un error
mwe.tex
como una secuencia de control indefinida - correr
latexmk -pdf mwe
- cuando se le solicite, cancele la compilación presionando
x
- arreglar error
- ejecutar
latexmk -pdf mwe
-> error biber - ejecutar
latexmk -pdf mwe
-> mismo error de biber, no desaparece
Entonces la pregunta es, ¿cómo puedo latexmk
volver a crear el archivo bcf para que biber pueda usarlo sin tener que limpiar o eliminar archivos manualmente?
Respuesta1
Como ya se mencionó en un comentario, la solución es usar la nueva versión de latexmk
(4.44 en el momento en que escribo esta respuesta), que ahora está disponible enhttp://www.ctan.org/pkg/latexmk/
Respuesta2
Actualizarmayo 2019Marzo de 2020:
Esto sigue siendo un problema con 18.04 LTS de Ubuntu (bionic), porque entregan la versión4.41.
Según lo declarado porJohnesto está solucionado desde la versión 4.44. Se entregan versiones más nuevas de latexmk para cosmic, disco, eoan, focal, etc.
Hay al menos tres formas de actualizar, elige una de ellas:
a) Descargue e instale el .deb
paquete manualmente, por ejemplo desdehttps://packages.ubuntu.com/focal/all/latexmk/downloady es de esperar que no sea necesario actualizar más dependencias.
b) Solucioné ese problema en mi máquina usando temporalmente el repositorio cósmico:
- edite /etc/apt/sources.list en la línea del repositorio del universo de biónico a cósmico, guarde
- actualización adecuada
- apto para instalar látexmk
- revertir cambios en /etc/apt/sources.list
- actualización adecuada
En general, no se recomiendan ambos, pero latexmk es una aplicación/script muy simple con pocas dependencias. No es necesario fijar porque, con suerte, el mantenedor no elegirá una versión entre 4.41 y 4.44, la versión actual en cosmic es 4.59.
c) Otro enfoque sería cargar el paquete más nuevo desdeCTANe instálelo como en la documentación, básicamente reemplace y ajuste los permisos. Ver¿Cómo puedo actualizar latexmk? ¿Por qué hay una versión muy antigua en el repositorio de Ubuntu?.