Joseph Gaudard
At the University of Bergen (probably other places too), it is common practice to have a table presenting the author contributions from all the papers included in the thesis. Doing it manually is prone to errors, or forgetting to update, and annoying if some papers had many co authors. Here I am showing how I did it for me. It is not a super elegant solution, but it works, it is automated and I thought I’d share in case it is useful to others. We are going to use the Plume R package Gallou (2025), the multibib extension and the bold-author filter. Additional resources used in this template repos were found in this blog post. If you use this repo as a template you should be all set.
I have three bib files:
- Papers that are included in the thesis (
phd_paper.bib) - Papers and outreach pieces that are not included but were done during
the time of the thesis (
others.bib) - Standard bibliography as produced by Zotero (
refs_list.bib).
We want a list of scientific contributions at the beginning of the
thesis, with a formatting on the idea of “Paper I: Author and other
(Year) Title. Journal.”. But in the actual references at the end of the
thesis, we want all the papers (including the ones not included in the
thesis) to appear in the same list, with proper formatting (et al. after
a certain number of authors, doi link, etc), and no author name in bold.
To achieve that, I create the list of scientific contributions in a
separate qmd file (paper_list.qmd) that outputs a md file. In the main
file (phdthesis.qmd), I add an {{< include paper_list.md >}}.
In paper_list.qmd, I use multibib to create two separate
bibliographies, one for the papers included in the thesis, and one for
the other contributions. In the yaml, I add nocite: @* to cite all the
items from phd_paper.bib and others.bib since there are not cited in
the text. Alternatively, you can call them with their key, if you want
to have more control. In the main thesis file, I just have one
bibliography including all the references from the three bib files.
Note that if no items from one of the bibliographies is called, it will throw an error. Which means that when you are just starting, you should just call at least one reference of each to be able to render.
To display the PhD papers with “Paper I:” before the entry, I did not find a better solution than modifying the entry in the bib file, before the first author.
To setup the Plume workflow, I can only point to Arnaud’s excellent
documentation.
Ideally you have done that for the papers already, so the google sheets
with author contributions are all set and you can reuse them. I wrote
several function in authors_tbl_fct.R to produce author lists and
contributions tables that are used in the thesis and authorship
statement. Then the tables of the different papers are joined together
(use full_join in case some contributions appear for one paper and not
the others).
The list of authors and affiliations is produced with Plume. The only tricks here are to first bind together the author tables from the different paper, apply unique to avoid duplicates, and add a ranking (optional). The ranking allows you to force the order if you want to have everyone in alphabetical order, but yourself first following by your supervisors and then the other co authors.
The authorship statement is produced with Plume as well, using the same
author contribution tables as for the contributions table in the thesis.
That way, we avoid errors. To update the manuscript titles, just change
them in the phd_paper.bib file and rerun the targets.
The repo is now organised with targets (Landau, 2021) and you just
need to run the following code to render everything:
targets::tar_make()If you are using large dataset or making figures in the thesis itself,
you can add them as targets in the _targets.R file and they will be
automatically updated when you change the data or the code to make the
figures.
The papers are added as pdf files, so there you do whatever you want to produce them. Published papers can be added as pdfs too.
Landau, W.M. (2021), “The targets R package: A dynamic Make-like function-oriented pipeline toolkit for reproducibility and high-performance computing”, Journal of Open Source Software, Vol. 6 No. 57, p. 2959.