I had an issue today where I wanted to create a custom .bst file for Biology Letters that would format as follows:

  1. Parmesan C, Yohe G. 2003 A globally coherent fingerprint of climate change impacts across natural systems. Nature 421, 37–42.

I was using makebst, incrementally editing my .dbj file, but I couldn’t seem to get that ‘.’ on the end of the author list to come out. The problem seemed to be some interaction between the default for blocks and authors.

My options for author were

%<>PUNCTUATION AFTER AUTHORS:

So going with the default invoked (I think) this section of the .dbj file

%<>PUNCTUATION BETWEEN SECTIONS (BLOCKS):

Unfortunately the “else commas” up there means commas after the author block. So the combination above was producing

  1. Parmesan C, Yohe G, 2003 A globally coherent fingerprint of climate change impacts across natural systems. Nature 421, 37–42.

When I tried going for the default, i.e.

%<>PUNCTUATION BETWEEN SECTIONS (BLOCKS):

I was still getting a comma. I’m not sure what the openbib option is so that might have been the answer there.

Instead, my solution (if you can call it that) was to leave the punctuation between sections as default, and change the author section to

%<>PUNCTUATION AFTER AUTHORS:

I then went into the .bst file and initially tried to replace all instances of ‘add.colon’ with ‘add.period’, but when that didn’t work, I found the ‘add.colon’ function and put a new ‘add.period’ function under it.

FUNCTION {add.colon}
{ duplicate$ empty$
 'skip$
 { ":" * add.blank }
 if$
}

FUNCTION {add.period}
{ duplicate$ empty$
 'skip$
 { "." * add.blank }
 if$
}

The .bst file now produced what I needed.

You can find the .bst files here: biologyletters.bst, biologyletters.dbj.