I like how urlbst handles preprints and DOIs in the bibliography. However, I noticed that none of the default urlbst bibliography styles are capable of producing author-year citations. Whenever I try


\usepackage[sort, authoryear]{natbib}


One \cite{Colmsee2015}  to \cite{Ghrist2018} serve



I get the following error

Package natbib Error: Bibliography not compatible with author-year citations. ...mand\NAT@force@numbers{}\NAT@force@numbers

If I instead go for numerical citation, everything goes smoothly.

Is there a quick way to modify, say plainurl.bst, so that it supports author-year citations?

If needed, this is my foobiblio.bib file

  author        = {Robert Ghrist and Rachel Levanger and Huy Mai},
  title         = {Persistent Homology and {E}uler Integral Transforms},
  year          = {2018},
  abstract      = {The Euler calculus -- an integral calculus based on Euler characteristic as a valuation on constructible functions -- is shown to be an incisive tool for answering questions about injectivity and invertibility of recent transforms based on persistent homology for shape characterization.},
  archiveprefix = {arXiv},
  eprint        = {1804.04740},
  primaryclass  = {math.AT},

  author    = {Colmsee, Christian and Beier, Sebastian and Himmelbach, Axel and Schmutzer, Thomas and Stein, Nils and Scholz, Uwe and Mascher, Martin},
  journal   = {Molecular Plant},
  title     = {{BARLEX:} the Barley Draft Genome Explorer},
  year      = {2015},
  issn      = {1674-2052},
  month     = {Jun},
  number    = {6},
  pages     = {964-966},
  volume    = {8},
  day       = {01},
  doi       = {10.1016/j.molp.2015.03.009},
  groups    = {Barley genomics and phenomics},
  publisher = {Elsevier},

1 Answer 1


The urlbst distribution is really a distribution of the script which modifies .bst files, with a few pre-convered BST files included for convenience.

This is a Perl script (sorry – it was a long time ago), and can be used like this (presuming you have Perl installed on your machine):

% kpsewhich chicago.bst
% ./urlbst /usr/local/texlive/2020/texmf-dist/bibtex/bst/chicago/chicago.bst chicagourl.bst

The first command is to find out where the currently-installed chicago.bst actually is. The second command converts that .bst file into a new one called chicagourl.bst.

If I take your MWE and substitute


Then I get:

MWE output

The script isn't guaranteed to work on every BST file – it's rather heuristic – but should work OK on ones which look more-or-less like the standard ones.

  • I should have read the urlbst README file more carefully... Thanks!
    – EA304GT
    Jan 28, 2021 at 19:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .