# Collaborating with biblatex

This answer says that my TeX editor (TeXstudio) is choosing a bibliography tool for me. But it seems that I have to make the biblatex backend match this bibliography tool in source code for my document to compile.

Thus, if I set the default bib tool to bibtex, I must write:

\usepackage[backend=bibtex]{biblatex}


while if I set the default bib tool to biber, I have to set the backend to biber (or leave it out, since biber is the default). Mismatching the biblatex setting and the default tool in the editor (e.g., by telling the editor to use bibtex but writing \usepackage[backend=biber]{biblatex} results in errors like:

Process started: bibtex.exe "main"

This is BibTeX, Version 0.99d (TeX Live 2017/W32TeX)
The top-level auxiliary file: main.aux
I found no \citation commands---while reading file main.aux
I found no \bibdata command---while reading file main.aux
I found no \bibstyle command---while reading file main.aux
(There were 3 error messages)

Process exited with error(s)


This is annoying for my own documents when I have to switch my editor's backend. But it's much worse when I'm working with other people. When I change the source code to use biblatex, this implies that my co-authors have to figure out how to make their editor use the same bib tool as me, which might not be their preferred method. This isn't a problem if I don't use biblatex, because nothing in the source code forces someone to use a particular bib tool. Is it really this difficult, or is there an easier way? It doesn't seem right that changing the source code can break someone else's build system.

• Most editors support magic comments in the source to tell you how to compile. See When and why should I use % !TEX TS-program and % !TEX encoding? for details. Working collaboratively with biblatex/biber can be tricky sometimes, since the versions of the two have to match. It helps a lot for collaborating users to be using the same year of TeX distribution. – Alan Munn Jun 26 '19 at 16:24
• @AlanMunn The comment commands are useful, but only if coauthors are using one of those editors. In particular, emacs is popular, but apparently doesn't support those commands. Distressing to hear that our versions may have to match, too... Is there something in the source code that would make the version matter? – crockeea Jun 26 '19 at 16:51
• emacs+auctex can usually tell by itself. get emacs to automatically use biber instead of bibtex. Alternatively, people can compile using latexmk which also can tell by itself. arara is another possibility. – Alan Munn Jun 26 '19 at 17:05
• On version matching, there is no backwards compatibility mode that you can specify within the source to match biber and biblatex versions. See p.7 of the biblatex documentation for the range of possibilities. So there's really no good way around that problem. I have multiple years of TeX Live installed on my machine, so I can adapt to collaborators when needed, and switching (on Mac) is quite trivial. – Alan Munn Jun 26 '19 at 17:27
• In the LaTeX world it is not that outlandish that code changes could "break" the build environment. Load fontspec and you must compile your document with XeLaTeX or LuaLaTeX. Load and use pstricks and you need LaTeX (not pdfLaTeX in PDF mode) or XeLaTeX. Load an index package and you need to run an additional indexing tool... Use \labels or add a ToC and you need to compile your document at least twice to make sure all references are OK. – moewe Jun 27 '19 at 5:43

Since I've now answered this in the comments, I might as well add an actual answer. There are two main issues with respect to collaborating with people using biblatex: build process and version matching.

## Controlling the build process on a per-document basis

The first, as you note, is dealing with people's different default build setups. In this case, what's needed is a way to control compilation on a per-document basis. Many editors support "magic comments" which do exactly this. To control the bibliography processing you can use:

% !BIB TS-program = biber


or

% !BIB program = biber


See the following question for a complete list of possibilities, as well as which editors support them.

If you are using emacs, auctex usually knows which bib program to use. See this question:

and also:

Alternatively, you can use latexmk to compile the document. latexmk is smart enough to tell whether to use biber or bibtex, and does all of the relevant compiles needed to resolve references and produce the bibliography.

A third option is to use arara for compilation. Then you can put the build process directly into the document and tell your collaborators to use arara to compile. Most editors can be set up to use it. (There are various questions on the site about setting up different editors to use it.)

## Matching biber and biblatex versions

A second more serious problem that using biblatex poses for collaboration is the fact that versions of biber and biblatex are very closely connected, and since both are still being developed, there have been many versions over the years. I should also note here that using the [backend=bibtex] package option is really not a viable option for most current biblatex styles.

Below is a list from the current biblatex manual. There is no backwards compatibility modes in either biber or biblatex which means you really do need to keep versions up-to-date and matching. Ideally then, this means that all collaborators have the same year of TeX Live (or the MikTeX equivalent of it) installed. The most likely problems will arise with Linux users, since Linux packaged distributions often lag behind the current year.

This problem may not be quite as serious as it looks, at least if everyone is using a fairly up-to-date version, and people don't try to compile using the .bcf file generated by a different version. This problem can arise, for example, if people are sharing a document in a Dropbox folder, rather than e.g. compiling a local version and managing the collaboration via Git.

Many of us have multiple years of TeX Live installed on our machines. Depending on the OS it's usually not too difficult to switch between them. So this can also be an option.

• The version compatibility problem only arises if you share compilation artifacts, which is probably bad for other reasons as well. I usually use git and put all artifact file types (*.aux, *.bcf, etc) in my .gitignore, which solves this problem. – crockeea Jun 26 '19 at 22:26
• @crockeea Yes, that's what I tried to say in my discussion. Although if you have someone with a seriously outdated distribution and are tweaking biblatex code in the document or using fancy biber functions you may encounter real incompatibilities. – Alan Munn Jun 26 '19 at 22:28