
Я использую latexmk
with pdflatex
для компиляции своей диссертации, with biblatex
для ссылок и biber
в качестве бэкэнда. Он отлично компилируется и создает корректный вывод PDF. Если изменение исходных файлов приводит к ошибке, первый запуск завершается pdflatex
неудачей, но создается файл bcf. Затем запуск biber жалуется на некорректный файл bcf, указывая на то, что последний biblatex
запуск завершился неудачей, и компиляция останавливается. Однако после исправления ошибки latexmk
думает, что pdflatex
запуск прошел нормально, и вызывает biber
, но файл bcf по-прежнему некорректен.
latexmk
каким-то образом, похоже, не замечает, что были изменения файлов.
Удаление файла bcf или его очистка с помощью сначала вызывает latexmk -C
и заново создает правильный файл bcf. Вызов вручную тоже работает, но сводит на нет смысл . Я пытался использовать как вариант, но это не работает. Кажется, я припоминаю, что это работало с TexLive 2014, после неудачной попытки запуска запускался первым при следующей попытке.latexmk
pdflatex
pdflatex
latexmk
-halt-on-error
pdflatex
biber
latexmk
pdflatex
Я использую TexLive 2015, версия latexmk
4.43a, biber
имеет версию 2.3. Вывод получается такой
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:
\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}
Библиография.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}
}
Действия по воспроизведению:
- бегать
latexmk -pdf mwe
- ввести ошибку в
mwe.tex
виде неопределенной управляющей последовательности - бегать
latexmk -pdf mwe
- при появлении запроса прервите компиляцию, нажав
x
- исправить ошибку
- запустить
latexmk -pdf mwe
-> ошибка biber - запустить
latexmk -pdf mwe
-> та же ошибка biber, не исчезает
Итак, вопрос в том, как мне latexmk
заново создать файл bcf, чтобы biber мог его использовать без необходимости вручную очищать или удалять файлы?
решение1
Как уже упоминалось в комментарии, решение заключается в использовании новой версии latexmk
(4.44 на момент написания этого ответа), которая теперь доступна по адресуhttp://www.ctan.org/pkg/latexmk/
решение2
ОбновлятьМай 2019 г.Март 2020:
Это все еще проблема с Ubuntu 18.04 LTS (bionic), поскольку они поставляют версию4.41.
Как заявилДжонэто исправлено с версии 4.44. Более новые версии latexmk поставляются для cosmic, disco, eoan, focal,..
Существует как минимум три способа обновления, выберите один из них:
а) Загрузите и установите .deb
пакет вручную, например, с сайтаhttps://packages.ubuntu.com/focal/all/latexmk/downloadи, надеюсь, не потребуется обновления каких-либо дополнительных зависимостей.
б) Я исправил эту проблему на своем компьютере, временно используя репозиторий cosmic:
- отредактируйте /etc/apt/sources.list в строке репозитория universe с bionic на cosmic, сохраните
- удачное обновление
- apt установить latexmk
- отменить изменения в /etc/apt/sources.list
- удачное обновление
Оба варианта в целом не рекомендуются, но latexmk — очень простое приложение/скрипт с небольшим количеством зависимостей. Закрепление не требуется, поскольку, как мы надеемся, сопровождающий не выберет версию между 4.41 и 4.44, текущая версия в cosmic — 4.59.
в) Другой подход — загрузка новейшего пакета изКТАНи установите его, как в документации, по сути замените и настройте разрешения. СмотритеКак обновить latexmk? Почему в репозитории Ubuntu содержится очень старая версия?.