Arquivo bcf malformado não recriado pelo latexmk após erro

Arquivo bcf malformado não recriado pelo latexmk após erro

Estou usando latexmkwith pdflatexpara compilar minha tese, como biblatexreferência e bibercomo 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 pdflatexfalhará, mas um arquivo bcf será criado. A execução do biber então reclama sobre um arquivo bcf malformado, indicando que a última biblatexexecução falhou e a compilação foi interrompida. No entanto, depois de corrigir o erro, latexmkpensa que a pdflatexexecução foi correta e invoca biber, mas o arquivo bcf ainda está malformado. latexmkde alguma forma, não parece notar que houve alterações no arquivo.

Remover o arquivo bcf ou limpá-lo latexmk -Cfaz latexmka chamada pdflatexprimeiro e recria um arquivo bcf correto. Chamar pdflatexmanualmente também funciona, mas anula o propósito do latexmk. Tentei usar -halt-on-errorcomo opção pdflatexmas não funcionou. Parece que me lembro que funcionou com o TexLive 2014, depois de uma tentativa fracassada de execução, biber latexmkseria executado pdflatexprimeiro na próxima tentativa.

Estou usando o TexLive 2015, a versão latexmké 4.43a, bibertem 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:

  1. correrlatexmk -pdf mwe
  2. introduzir um erro mwe.texcomo uma sequência de controle indefinida
  3. correrlatexmk -pdf mwe
  4. quando solicitado, aborte a compilação pressionandox
  5. correção de erro
  6. executar latexmk -pdf mwe-> erro biber
  7. execute latexmk -pdf mwe-> mesmo erro biber, não desaparece

Portanto, a questão é: como latexmkrecriar 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 .debpacote 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:

  1. edite /etc/apt/sources.list na linha do repositório do universo de biônico para cósmico, salve
  2. atualização adequada
  3. apto instalar latexmk
  4. reverter alterações em /etc/apt/sources.list
  5. 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?.

informação relacionada