
Estou usando latexmk
with pdflatex
para compilar minha tese, como biblatex
referência e biber
como backend. Ele compila perfeitamente e cria uma saída PDF correta. Se uma alteração nos arquivos de origem introduzir um erro, a primeira execução pdflatex
falhará, mas um arquivo bcf será criado. A execução do biber então reclama sobre um arquivo bcf malformado, indicando que a última biblatex
execução falhou e a compilação foi interrompida. No entanto, depois de corrigir o erro, latexmk
pensa que a pdflatex
execução foi correta e invoca biber
, mas o arquivo bcf ainda está malformado.
latexmk
de alguma forma, não parece notar que houve alterações no arquivo.
Remover o arquivo bcf ou limpá-lo latexmk -C
faz latexmk
a chamada pdflatex
primeiro e recria um arquivo bcf correto. Chamar pdflatex
manualmente também funciona, mas anula o propósito do latexmk
. Tentei usar -halt-on-error
como opção pdflatex
mas não funcionou. Parece que me lembro que funcionou com o TexLive 2014, depois de uma tentativa fracassada de execução, biber
latexmk
seria executado pdflatex
primeiro na próxima tentativa.
Estou usando o TexLive 2015, a versão latexmk
é 4.43a, biber
tem a versão 2.3. A saída produzida é
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
Mwe.tex obrigatório:
\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}
Bibliografia.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}
}
Passos para reproduzir:
- correr
latexmk -pdf mwe
- introduzir um erro
mwe.tex
como uma sequência de controle indefinida - correr
latexmk -pdf mwe
- quando solicitado, aborte a compilação pressionando
x
- correção de erro
- executar
latexmk -pdf mwe
-> erro biber - execute
latexmk -pdf mwe
-> mesmo erro biber, não desaparece
Portanto, a questão é: como latexmk
recriar o arquivo bcf para que o biber possa usá-lo sem precisar limpar ou remover arquivos manualmente?
Responder1
Como já mencionei em comentário, a solução é utilizar a nova versão latexmk
(4.44 no momento em que escrevo esta resposta), que já está disponível emhttp://www.ctan.org/pkg/latexmk/
Responder2
AtualizarMaio de 2019Março de 2020:
Este ainda é um problema com o 18.04 LTS do Ubuntu (biônico), porque eles entregam a versão4.41.
Como indicado pelaJohnisso foi corrigido desde a versão 4.44. Versões mais recentes do latexmk são entregues para cosmic, disco, eoan, focal,..
Existem pelo menos três maneiras de atualizar, escolha uma delas:
a) Baixe e instale o .deb
pacote manualmente, por exemplo, dehttps://packages.ubuntu.com/focal/all/latexmk/downloade espero que não exija a atualização de mais dependências.
b) Corrigi esse problema na minha máquina, usando temporariamente o repositório cósmico:
- edite /etc/apt/sources.list na linha do repositório do universo de biônico para cósmico, salve
- atualização adequada
- apto instalar latexmk
- reverter alterações em /etc/apt/sources.list
- atualização adequada
Em geral, ambos não são recomendados, mas o latexmk é um aplicativo/script muito simples com poucas dependências. A fixação não é necessária porque esperamos que o mantenedor não escolha uma versão entre 4.41 e 4.44, a versão atual no cosmic é 4.59.
c) Outra abordagem seria carregar o pacote mais recente doCTANe instale-o como na documentação, basicamente substitua e ajuste as permissões. VerComo posso atualizar o latexmk/por que uma versão muito antiga está contida no repositório do Ubuntu?.