Joseph Gaudard
At the University of Bergen (probably other places too), it is required 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 (2024), the multibib extension and the bold-author filter. Additional resources used in this tutorial 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 line 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: with the keys of
the items from phd_paper.bib and others.bib since there are not
cited in the text. 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. In the
code bloc contributions, I wrote the contrib_paper function that
transforms the output of Plume into a table. 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.