Biblatex and arxiv, error
If you are looking for help with biblatex
and Biber for arXiv uploads, have a look at https://github.com/plk/biblatex/wiki/biblatex-and-the-arXiv and Making the arXiv accept a BibTeX BBL (May 2018) as well.
Overleaf users may be interested in https://www.overleaf.com/learn/how-to/LaTeX_checklist_for_arXiv_submissions.
Introduction and some background
(More background can be found in https://github.com/plk/biblatex/wiki/biblatex-and-the-arXiv and the posts linked there.)
Since February 2017, arXiv is running TeX live 2016 (https://confluence.cornell.edu/display/arxivpub/2016+arXiv+Roadmap, https://arxiv.org/help/faq/texlive) with - if I understand 'arXiv is now running under TeXLive 2016, with a new, updated and enhanced tree of local addons and support for newer font sets, and everything else contained within the standard distribution' correctly - packages updated a bit after the initial release of TeX live 2016.
It is, however, nowhere indicated that arXiv would get continuous updates from CTAN. And indeed that would most likely be unfeasible and is thus very, very unlikely.
Due to the way biblatex
works, version mismatches are fatal errors. (And even if they are not detected - as was the case in older versions - they can still wreak havoc on your documents.)
So you can submit documents using biblatex
since they are able to run it, but only if your biblatex
and Biber version matches the version that arXiv is running. At this moment I believe they are running biblatex
3.7 and Biber 2.7, while the current versions on CTAN are biblatex
3.14 and Biber 2.14.
Since biblatex
is still being developed and sometimes huge internal changes are made from one version to another, biblatex
is not exactly best friends with the publishing world, who values stability and in some cases moves very slowly through LaTeX versions. See also Biblatex: submitting to a journal.
See also Biblatex: submitting to the arXiv and Publishing to Arxiv using Biblatex-Biber
Solutions
There are in essence two solutions, either you compile your document locally with the biblatex
/Biber versions that the arXiv has installed or you upload your version of biblatex
(possibly including other dependencies) along with your .tex
file when you submit your article to the arXiv.
Compile your document with the biblatex
/Biber versions from the arXiv
The way to produce a .bbl
file that is compatible with the arXiv is to compile your document with the biblatex
and Biber versions installed on the arXiv.
While it is possible to install certain versions of biblatex
and Biber from SourceForge this is usually not recommended to only downgrade those packages, as that can lead to incompatibilities either with dependencies of biblatex
or with biblatex
styles. It is safer just to install a complete system with the right versions.
As things currently stand you will want to install a historic TeX live 2017 to get versions of biblatex
and Biber matching the arXiv versions.
Historic Tex live versions can be obtained from ftp://tug.org/texlive/historic/. Since it is possible to have several TeX live versions installed in parallel (Using two installs of texlive in parallel), this should not prevent you from using a more up-to-date TeX system for documents that are not being prepared for arXiv submission. You do not need to (and indeed you should not) uninstall your current TeX system.
More details and some helpful links can be found in https://github.com/plk/biblatex/wiki/biblatex-and-the-arXiv#getting-the-right-package-versions.. This solution is for example described in Biblatex v3.11 with arXiv - how fix "wrong format version" error?.
Upload your version of biblatex
to the arXiv
The idea here is not to get the same version of biblatex
as the arXiv, instead you upload your version of biblatex
to the arXiv.
There is precedence of people just uploading all necessary biblatex
files in their submissions, see https://arxiv.org/abs/1610.02077 and https://arxiv.org/abs/1608.06539 amongst others. This works if biblatex
does not depend on recently added functionality in another package. In the near future that is going to be a viable option. In a 2017 paper by one of the authors, they could get away with only providing the non-standard styles since the local version of bibliatex
and arXiv's version matched: https://arxiv.org/abs/1703.01152.
If one doesn't know which files changed between the different biblatex
versions, it is a bit tricky to know which files to upload. But there is a helpful script by Dougal Sutherland that automatically uploads all required files (this may well be overkill, but generally increases the change that the arXiv can compile your files), see https://github.com/dougalsutherland/arxiv-collector.
The arXiv people even have put up a bit of advice on biblatex
on their help site: https://arxiv.org/help/faq/texlive.html
An incomplete list of common symptoms, errors, and fixes follows:
Wrong
biblatex
format version. If you have been developing with an olderbiblatex
you will need to regenerate your.bbl
file.Package biblatex Warning: File 'Constraints.bbl' is wrong format version - expected 2.7.
fix: the author needs to regenerate their
.bbl
file.
Note that this advice only works if you have the same version of biblatex
that arXiv is running on your local machine. As soon as the two versions are out of sync, things cannot be fixed by simply regenerating the .bbl
.
For me, the solution is to upload my own versions of biblatex.sty
[1] and blx-compat.def
[2] to arXiv.
[1] /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.sty
[2] /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-compat.def
Note that the problem is the API version, not the file format version (the BBL file is regular TeX)
I know that the question has been updated but I was still getting the version error but that was because mine was a newer version. Getting an older version seemed tedious.
I tried compiling my code on overleaf and then I copied from the output generated, the .bbl file which had the right version.
Uploading this version with everything else unchanged worked for me; might help you as well.
EDIT: This procedure failed in Dec, 2019 because overleaf seems to have upgraded their compilers. This tool saved the day: arxiv-collector.
To install, use pip install arxiv-collector
or conda install -c conda-forge arxiv-collector
. If my main file is paper.tex, I need to simply run arxiv-collector paper.tex
and it creates a compressed directory, ready to be uploaded to (the) arXiv!
Remark: Using LyX on Windows? Well, I was using LyX on Windows to generate the .tex file and running the tool on Ubuntu (on a virtual machine; haven't tried WSL (Windows Subsystem for Linux)) with git to synchronize things. There was some trouble with the encoding of the files and so the accents would get broken. In the end, I just replaced the .tex file in the folder produced by arXiv-collector, with the one exported by LyX.