This is a post on how to prepare a LaTeX project for arXiv/journal submission in my current workflow.

My LaTeX workflow

Out of necessity, my workflow is entierely offline. I have TeXLive installed on my Macbook, along with all the packages and the utilities in the standard version. I use git for versioning, and private Github repositories for backup and collaboration. My Github CI and githooks are heavily inspired from Pieter Belmans’s latex template, but for the purposes of this post all of that is irrelevant, so I will ignore everything not related to LaTeX compilation.

The directory of one of my projects, excluding CI and githooks, contains exactly three files:

main.tex, preamble.tex and bibliography.bib.

The file preamble.tex contains, among all the code that goes in a preamble, the following two lines:

\usepackage[backend=biber]{biblatex}
\addbibresource{bibliography.bib}

My main.tex file contains (of course) the command

\input{preamble.tex}

before the document environment, and

\printbibliography

at the end of the document environment, where the references should be rendered.

To compile the project, I use latexrun. This means that a long time ago I downloaded the python script latexrun from its repo, dropped it in the bin folder of my machine along with all my scripts, and now whenever I want to compile a LaTeX file I simply run

latexrun --bibtex-cmd=biber main.tex

At this point, latexrun runs pdflatex exactly as many times as it needs to be ran, and creates a folder called latex.out/ where it hides all of LaTeX intermediary files. After it runs, a main.pdf file appears in the root directory. Pretty neat.

Whenever something weird happens, deleting latex.out/ and all the auxiliary files and running latexrun again usually solves the problem.

My projects compile almost in real time, without online activity, I see no annoying auxiliary files, and life is good.

Submitting to arXiv

Life is good, we were saying, until it isn’t and I need to submit .tex files to the arXiv, or to a journal. I have spent too much time looking up the problem on Google, only finding outdated Stackexchange posts, thinkering with auxiliary files and dubious BibTeX commands, uploading projects and letting the platform compile them, only to be greeted by a document without citations, broken links or a badly rendered bibliography.

After some time, I eventually realised that the solution is very simple. Behold.

Solution

  1. Compile the project and ensure it looks as intended.
  2. Find the .bbl auxiliary file and include it in the submission.

That’s it.

No other action is needed, no modifications of the .tex files in the project are necessary.

Literally just include the new file in the submission.

And don’t use BibTeX. It’s 2024, move on.

Edit of April 21st, 2025

The current distribution of TeXLive is the 2025 version. At the time of writing, ArXiv processes all .tex submissions using TeXLive 2023, as explained on their website.

This is incompatible with my workflow, which uses the latest version of biblatex. Long story short, arXiv’s version of biblatex cannot read the .bbl files produced by mine, so when I try to upload a paper on the preprint server, its engine does not render my bibliography correctly.

The only reliable solution I have found is to use TeXLive 2023 when compiling the submission-to-be; this can be done either by installing multiple TeXLive distributions on one’s machine, or more helpfully by using Overleaf.

It remains to be understood why, in the year of the Lord 2025, the central, undisputed repository of humankind’s finest intellectual disciplines requires a .bbl file, and does not process the extremely standardised and widely understood .bib format.